芦苞网站建设,很久以前做相册mv的网站,中山小榄网站建设,项目营销推广策划文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的
⚪ 了解Scala的柯里化 Currying;
⚪ 掌握Scala的类定义;
⚪ 掌握Scala的样例类、option类;
⚪ 掌握Scala的隐式转换机制; 一、柯里化 Currying
柯里化(Currying)技术 Christopher St…文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的
⚪ 了解Scala的柯里化 Currying;
⚪掌握Scala的类定义;
⚪掌握Scala的样例类、option类;
⚪掌握Scala的隐式转换机制; 一、柯里化 Currying
柯里化(Currying)技术 Christopher Strachey 以逻辑学家 Haskell Curry 命名的(尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的)。它是把接受多个参数的函数变换成接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。 案例1: object Demo08 { def main(args: Array[String]): Unit = { //首先我们定义一个函数: def f1(a:Int,b:Int):Int={a+b} //现在我们把这个函数变一下形: def f2(a:Int)(b:Int)={a+b} //那么我们应用的时候,应该是这样用:f2(2)(3),最后结果都一样是5,这种方式(过程)就叫柯里化。 val r1=f2(2)(3) //柯里化实质上会演变成这样一个函数: //接收一个参数a,返回一个匿名函数, //该匿名函数又接收一个参数b,函数体为a+b def f3(a:Int)=(b:Int)=a+b val f4=f3(2) //请思考 f4(3)的值是多少?答案是:5 f4(3) } } 示例2: object Demo09 { def f1(a:Int,b:Int,c:Int):Int={a+b+c} def f2(a:Int)(b:Int)(c:Int):Int={a+b+c} def f3(a:Int)(b:Int,c:Int):Int={a+b+c} def f4(a:Int,b:Int)(c:Int):Int={a+b+c} def main(args: Array[String]): Unit = { //f1和f2的函数的体现的是传入三个数,马上得到结果 f1(1,2,3) f2(1)(2)(3) //f3函数则可以体现:延迟执行的思想以及固定易变因素的思想 val r1=f3(1)(2,3) } } 示例3: object Demo10 { def f1(a:Int,b:Int,f:(Int,Int)=Int):Int={f(a,b)} def f2(a:Int)(b:Int)(f:(Int,Int)=Int):Int={f(a,b)} def f3(a:Int,b:Int)(f:(Int,Int)=Int):Int={f(a,b)} def f4(a:Int)(b:Int,f:(Int,Int)=Int):Int={f(a,b)} def main(args: Array[String]): Unit = { //调用f3 f3(2,3){(a:Int,b:Int)=a+b} //可简化为下面的形式,我们发现这和scala