91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

即墨市| 清远市| 利津县| 如皋市| 横峰县| 山东| 金堂县| 广州市| 新干县| 马公市| 通化市| 海丰县| 昌宁县| 股票| 鹤岗市| 公主岭市| 郑州市| 平原县| 南漳县| 建宁县| 株洲县| 邳州市| 涞水县| 房产| 乌海市| 板桥市| 雷山县| 崇左市| 海盐县| 历史| 河南省| 海晏县| 竹山县| 永济市| 阳东县| 沙河市| 泸溪县| 汉阴县| 丰台区| 玉环县| 德清县|