scala函数和闭包
方法:
作为某个对象的成员,这种函数被称为方法
本地函数
你可以把函数定义在另一个函数中,就好像本地变量,这种本地函数仅在包含它的代码块中可见
函数是第一类值
scala拥有第一类函数,你不仅可以定义函数和调用它们,还可以把函数写成没有名字的文本,并把它们像值那样传递
函数文本被编译进一个类,类在运行期实例化的时候是一个函数值
一次函数文本和值的区别在于函数文本存在于源代码,而函数值存在于运行期对象
(x: Int) => x + 1
=>指明这个函数把左边的东西(任何整数x)转变成右边的东西(x + 1)
函数值是对象,可以把它们存入变量,也是函数,可以使用通常的括号函数调用写法调用它们
函数文本的短格式
scala> someNumbers.filter((x: Int) => x > 0)
scala> someNumbers.filter((x) => x > 0)
scala> someNumbers.filter(x => x > 0)
占位符语法
可以把下划线当做一个或更多参数的占位符
scala> someNumbers.filter(_ > 0)
这个空白在每次函数被调用的时候用函数的参数填入
偏应用函数
下划线还能替换整个参数列表
闭包
(x: Int) => x + more
more是个自由变量,
重复参数
指明函数的最后一个参数可以是重复的,
scala> def echo(args: String*) = for (arg <- args) println(arg)
尾递归

浙公网安备 33010602011771号