scala函数定义与使用

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变成一个正常的函数定义,从而让函数的定义闭合起来,这就是闭包。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值