您的位置:首页 > 其它

scala函数定义与使用

2015-05-17 11:01 99 查看
1.scala函数的完整定义:
def 函数名 (参数名:参数类型):函数返回值类型 ={函数体}

2.必须选项:
def 函数名

此处为定义一个不带参数,不带返回值的函数:例如

def m{println("hello world")}

不带参数可以省略(),但是调用的时候就不可以以 函数名() 的方式调用

定义函数的时候带有(),调用的时候,可以使用 函数名() 或者直接函数名的方式调用函数

可以直接通过m调用

3.带参数:

 def m(str:String){println(str)}

4.带返回值:
如果函数体简单,可以不要{}
如果不是递归调用,scala会自动推测返回值类型,所以可以不指定返回值类型:
def m(str:String)=str
也可以明确指定返回值类型
def m(str:String):String ={str}

5.匿名函数

如果一个函数没有名称,那么这样的函数就称为匿名函数,定义的格式为:

(参数名:参数类型) => 表达式

6.闭包

闭包是可以包含自由(未绑定)变量的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义。

说了半天,怎么我觉得,闭包就是作用域?

val sum=(x:Int) => x+y //not found value y

编程通过:

val y = 1//scala定义变量,必须初始化?

val sum = (x: Int) => x + y

反正别人说了一大堆,没看懂:

编译通过是因为在值函数外面声明了一个全局变量,然后值函数中的y捕获了这个全局变量,从而是x+y变成一个正常的函数定义,从而让函数的定义闭合起来,这就是闭包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala