不得不说刚开始看scla代码的时候有点蒙圈,各种的=>使用,出现的场景还各不相同,不得不总结下记个笔记
1.函数的类型
scala的函数能做参数直接用,参数嘛肯定都是有类型的,不得己函数不得不也有了类型,不同于传统的Int float double,函数的类型是个自定义的
准确点的说使用函数的参数和函数的返回值类型去描述的,这一说就有点绕,上例子
def fun1(x : Int,y :Int):Int = x+y 一个简单的函数,两个整型的数求和
var fun : (Int,Int) => Int = fun1 这就是定义一个函数变量,粗体就是函数变量的类型,然后就是把fun1赋值给了它
fun(1,2) 用的时候就当作函数直接使用就行了。
所以这里的=>就是个简单的连接符号,连接参数类型和返回值类型
2.匿名函数
匿名函数这种东西很多语言里有,就是嫌那些只用了一次的函数还要定义个完整浪费时间,不得已简化了下,像scala这样的语法函数都能
直接做变量的语言就更有存在的必要了。
var fun = (x:Int,y:Int) => x + y =>还是个连接符号,符号左边是参数,右边是函数体
fun(1,2) 老样子直接使用
3.case语句
最常用的应该就是这里了,一般的语法书上都会说明模式匹配,这里就随便上个例子
var x = 1
var y = x match {
case 1 => x
case _ =>
}
4.By-Name Parameters(传名参数)
这种情况就是把函数作为参数传递给另外一个函数,其实就是第一种情况,不过第一种情况是单独的变量,这里的变量跑到
函数里做形参去了,用法都是一样的,可能有点注意的就是如果函数是无参的话写的时候可能看起来有点怪
def fun1() = 2
def fun2(x : => Int) = println(x)
这最后打印的就是个2,我们关注的点还是=>所以往fun2的参数表里看看,=> Int 就这么多,记住就行了,其他的就不多说了。