Scala的偏函数可以说说吗?
偏函数(partial function),是数学概念,它不是“函数”的一种,他跟函数是平行概念。
scala中的partial function 是一个trait,起的类型为partiafunction[A,B],其中接收一个类型为A的参数,返回一个类型为B的结果。
举个例子:
scala>val pf:PartialFunction[Int,Sting]={
| case 1=>"one"
| case 2=>"two"
| case 3=>"three"
| case4=>"other"
|}
pf:Paetalfunction[Int,Sting]=<function1>
scala>pf(1)
res0:Sting=Owe
scala>pf(2)
res1:String=Two
scala>pf(3)
res2:String=Three
scala>pf4
res3:Sting=Other
偏函数内部有一些方法,比如isDefinedAt、OrElse、andThen、appyOrELSE等等。
谈谈Scala柯里化
柯里化函数也叫多参数列表函数,本身就是指接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术,
简单理解就是改变函数的形式,不改变函数的功能。看上去有点鸡肋,但是如果和隐式参数结合使用就能大大简化代码,同时也降低了一定的代码可读性。
Scala的applyhe和unapply方法是什么作用
apply方法:通常,在一个类的伴生对象中定义apply方法,在生成这个类的对象是,就省去了new关键字。
unapply方法:可以认为unapply方法是apply方法的方向操作,apply方法接受构造参数变成对象,而unapply方法接受一个对象,从中提取值。
Scala的元组定义之后可变吗
元组在Scala语言中是一个非常有用的容器对象。与列表一样,元组也是不可变 的;但是与列表不同,元组可以包含不同类型的元素。列如链表只能写成Lise[lnt]或者List[String],但是元组可以同时拥有int和String.元组适用场景有很多,比方说如果需要在方法里返回多个对象。Java里的做法是创建JavaBean已包含多个返回值,Scala里可以仅返回元组。而且做起来也很简单:只要把元组可以包含实例化需要的对象放在括号里,并用逗号分隔即可。元组实例化之后,可以用点号、下划线和基于1 的索引访问其中的元素。目前Scala支持元组最大长度为22.对于更大长度可以使用集合,或者扩展元组。