Scala =; 用法总结
Posted 左手程序右手拳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala =; 用法总结相关的知识,希望对你有一定的参考价值。
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() x scala> 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 now var y = 0 f y += 1; y // result like eval y += 1; y * y += 1; y 2
y+=1;y 并不特别,只是对y做了加1的操作,后面的;y没有起到任何修改y值的作用。 1 * 2 = 2。 就这么计算出来的。
以上是关于Scala =; 用法总结的主要内容,如果未能解决你的问题,请参考以下文章