中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

scala的提取器對象是什么

發布時間:2021-12-08 14:59:15 來源:億速云 閱讀:114 作者:iii 欄目:大數據

本篇內容主要講解“scala的提取器對象是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“scala的提取器對象是什么”吧!

提取器對象是一個包含有    unapply   方法的單例對象。  apply   方法就像一個構造器,接受參數然后創建一個實例對象,反之    unapply   方法接受一個實例對象然后返回最初創建它所用的參數。  提取器常用在模式匹配和偏函數中。
import scala.util.Randomobject CustomerID {  def apply(name: String) = s"$name--${Random.nextLong}"  def unapply(customerID: String): Option[String] = {    val stringArray: Array[String] = customerID.split("--")    if (stringArray.tail.nonEmpty) Some(stringArray.head) else None  }}val customer1ID = CustomerID("Sukyoung")  customer1ID match {  case CustomerID(name) => println(name)    case _ => println("Could not extract a CustomerID")}
這里    apply   方法用    name   創建一個    CustomerID   字符串。  而    unapply   方法正好相反,它返回    name   。  當我們調用    CustomerID("Sukyoung")   ,其實是調用了    CustomerID.apply("Sukyoung")   的簡化語法。  當我們調用    case CustomerID(name) => println(name)  ,就是在調用提取器方法。
因為變量定義可以使用模式引入變量,提取器可以用來初始化這個變量,使用 unapply 方法來生成值。  
val customer2ID = CustomerID("Nico")val CustomerID(name) = customer2IDprintln(name)
上面的代碼等價于   val name = CustomerID.unapply(customer2ID).get。  
   val CustomerID(name2) = "--asdfasdfasdf"
如果沒有匹配的值,會拋出    scala.MatchError  :
   
   val CustomerID(name3) = "-asdfasdfasdf"
unapply 方法的返回值應當符合下面的某一條:
  • 如果只是用來判斷真假,可以返回一個 Boolean 類型的值。
    例如 case even()
  • 如果只是用來提取單個 T 類型的值,可以返回 Option[T]
  • 如果你想要提取多個值,類型分別為 T1,...,Tn,可以把它們放在一個可選的元組中 Option[(T1,...,Tn)]
有時,要提取的值的數量不是固定的,因此我們想根據輸入來返回隨機數量的值。這種情況下,你可以用  unapplySeq 方法來定義提取器,此方法返回  Option[Seq[T]]。常見的例子有,用  case List(x, y, z) => 來解構一個列表  List,以及用一個正則表達式  Regex 來分解一個字符串  String,例如
   
   case r(name, remainingFields @ _*) =>

到此,相信大家對“scala的提取器對象是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临西县| 平顺县| 肇东市| 仁化县| 仪陇县| 平武县| 漳浦县| 微博| 应城市| 潞城市| 老河口市| 玛纳斯县| 嘉定区| 金乡县| 莎车县| 云和县| 神农架林区| 沁水县| 新泰市| 武穴市| 西林县| 广饶县| 南丰县| 兰溪市| 霍州市| 三都| 西安市| 南乐县| 铜陵市| 正镶白旗| 阿拉尔市| 铜川市| 达拉特旗| 志丹县| 仙游县| 托克逊县| 丘北县| 鄂尔多斯市| 龙胜| 绍兴市| 开封县|