重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“scala的提取器对象是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“scala的提取器对象是什么”吧!
10年积累的成都做网站、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有中阳免费网站建设让你可以放心的选择与我们合作。
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)
,就是在调用提取器方法。val customer2ID = CustomerID("Nico")val CustomerID(name) = customer2IDprintln(name)
val CustomerID(name2) = "--asdfasdfasdf"
scala.MatchError
:val CustomerID(name3) = "-asdfasdfasdf"
unapply
方法的返回值应当符合下面的某一条:Boolean
类型的值。case even()
。Option[T]
。T1,...,Tn
,可以把它们放在一个可选的元组中 Option[(T1,...,Tn)]
。unapplySeq
方法来定义提取器,此方法返回
Option[Seq[T]]
。常见的例子有,用
case List(x, y, z) =>
来解构一个列表
List
,以及用一个正则表达式
Regex
来分解一个字符串
String
,例如case r(name, remainingFields @ _*) =>
到此,相信大家对“scala的提取器对象是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!