🌀 技术人生
凡事有交代,件件有着落,事事有回音
Scala基础语法三

1.方法的定义与调用

1)方法的定义与调用

def 方法名(参数:参数类型,。。。。) :方法返回值类型 = {方法体}

当然上边的方法定义的方式中有许多是可以省略的,例如:

省略方法的返回值类型

注意: 方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回

省略传入方法中的参数

注意: 如上图中的例子所示,省略了参数之后可以写括号也可以不写括号,但是定义方法时写了括号,在调用该方法时写不写括号都可以调用,而在定义方法时没有写括号,则在调用该方法时就不能写括号,否则会报错

2)方法转变为函数

方法名 _

解读: (Int,Int,Int)=>Int=

左边是该函数的参数列表,中间是该函数的返回值类型,右边该函数有几个参数就是function几

注意: 方法名与_之间是有空格的

2.函数的定义与调用

函数定义方式一:

调用: f1(2) , 其中 f1 为函数的引用, 也可以叫做函数名, function1 表示一个参数的函数

函数定义方式二:

没有任何参数的函数,函数的返回值为 Int 类型 var ys:()=>Int=()=>1

3.传值调用与传名调用

首先来一段代码示例: object NumTest { var money = 100 def huaQian = { money = money - 10 } def shuQian = { huaQian money } def test(x:Int) = { for (s <- 0 to 3) println(s"剩余${x}元") } def test1(x: => Int) = { for (s <- 0 to 3) println(s"剩余${x}元") } def main(args: Array[String]): Unit = { test(shuQian) test1(shuQian) } }

输出结果:

上述代码中test方法中的调用就是传值调用,test1方法的调用就是传名调用,传值调用在调用前就是一个固定的值,调用的时候必须要传入一个值,而test1则是传入一个函数,这里的shuQian虽然是一个方法,但是传入的时候已经隐式的转变为函数了


最后修改于 2018-10-04

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。