本文主要总结一些在学习scala中遇到的特殊符号写法含义。
一、=>
最简化的理解,可以把=>的左侧理解为”LEFT”,右侧理解为“RIGHT”。
然后,“ LEFT => RIGHT ” 的含义变成:
取左边,然后右转。[Take LEFT then do RIGHT]
使用场景
1、
/** * 匿名函数 * Scala 中定义匿名函数的语法很简单,箭头左边是参数列表 => 右边是函数体。 * */ var cheng = (x:Int,y:Int) => x*y; def main(args: Array[String]): Unit = { println(cheng(2,4) - 2) //调用匿名函数 }
2、
/** * Scala 函数传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部 *在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。 这就造成了一种现象,每次使用传名调用时,解释器都会计算一次表达式的值。 */ def nowTime() = { println("获取时间,单位为纳秒") System.nanoTime } def delayed( t: => Long ) = { //在变量名和变量类型使用 => 符号来设置传名调用 println("delayed 方法开始。。。") println("参数: " + t) println("啦啦,再来一次: " + t) println("delayed 方法结束。。。") t } def main(args: Array[String]): Unit = { delayed(nowTime); }
3、函数类型的声明,左边是参数类型,右边是方法返回值类型 (Int)=>(Int)
4、case
语句中 case x => y