真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

scala的提取器對象是什么

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

10年積累的成都做網(wǎng)站、網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有中陽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

提取器對象是一個包含有    unapply   方法的單例對象。  apply   方法就像一個構(gòu)造器,接受參數(shù)然后創(chuàng)建一個實例對象,反之    unapply   方法接受一個實例對象然后返回最初創(chuàng)建它所用的參數(shù)。  提取器常用在模式匹配和偏函數(shù)中。
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   創(chuàng)建一個    CustomerID   字符串。  而    unapply   方法正好相反,它返回    name   。  當我們調(diào)用    CustomerID("Sukyoung")   ,其實是調(diào)用了    CustomerID.apply("Sukyoung")   的簡化語法。  當我們調(diào)用    case CustomerID(name) => println(name)  ,就是在調(diào)用提取器方法。
因為變量定義可以使用模式引入變量,提取器可以用來初始化這個變量,使用 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 方法的返回值應(yīng)當符合下面的某一條:
  • 如果只是用來判斷真假,可以返回一個 Boolean 類型的值。
    例如 case even()。
  • 如果只是用來提取單個 T 類型的值,可以返回 Option[T]。
  • 如果你想要提取多個值,類型分別為 T1,...,Tn,可以把它們放在一個可選的元組中 Option[(T1,...,Tn)]。
有時,要提取的值的數(shù)量不是固定的,因此我們想根據(jù)輸入來返回隨機數(shù)量的值。這種情況下,你可以用  unapplySeq 方法來定義提取器,此方法返回  Option[Seq[T]]。常見的例子有,用  case List(x, y, z) => 來解構(gòu)一個列表  List,以及用一個正則表達式  Regex 來分解一個字符串  String,例如
   
   case r(name, remainingFields @ _*) =>

到此,相信大家對“scala的提取器對象是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!


本文名稱:scala的提取器對象是什么
網(wǎng)站地址:http://weahome.cn/article/pigise.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部