vlambda博客
学习文章列表

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柯里化

 柯里化函数也叫多参数列表函数,本身就是指接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术,

简单理解就是改变函数的形式,不改变函数的功能。看上去有点鸡肋,但是如果和隐式参数结合使用就能大大简化代码,同时也降低了一定的代码可读性。


  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.对于更大长度可以使用集合,或者扩展元组。