Scala => 用法总结

来源:互联网 发布:java创建线程runnable 编辑:程序博客网 时间:2024/05/18 19:40

10.1 =>

这是个各种诡异用法的标记

10.1.1 创建匿名函数

=>右边是函数体,左边表示函数的参数类型.

(x: Int) => x + 1   

10.1.2 无参匿名函数

() => T    

相当于

new Function0[T] //T是返回类型

下面是示例代码

scala> val f: () => Unit = () => { println("x")}f: () => Unit = <function0>scala> f()xscala> val f2: Function0[Unit] = () => println("x2")f: () => Unit = <function0>scala> f2()x2

10.1.3 map函数中使用

这个十分常用,尤其在Spark里对RDD等数据类型操作时。这里很像匿名函数的创建方式,其实是lambda表达式,不清楚两者是否有区别。

List(1,2,3).map { (x: Int) => x * 2 }

10.1.4 case 语句里面使用

=>左边是匹配模式,右边是匹配成功后执行的表达式下面的v1形如Some(T), 需要将T提取出来。使用了match/case语句。

v1 match {  case Some(value1) => println(value1)}

10.1.5 名字传参

类似与lisp,在函数执行时才对参数求值

def f(x: => Int) = x * x// call it nowvar y = 0f { y += 1; y }// result like eval { y += 1; y } * { y += 1; y }2

{y+=1;y} 并不特别,只是对y做了加1的操作,后面的;y没有起到任何修改y值的作用。 1 * 2 = 2。 就这么计算出来的。

原创粉丝点击