Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。只是有一点特别的:这些操作符实际上是方法。
例如:
1 2 3 4
| a + b 是如下方法调用的简写: a.+(b) a 方法 b可以写成 a.方法(b)
|
定义方法
方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型。
定义函数
方法和函数的区别
在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作,函数是一个对象,继承自FuctionN。N代表函数创建是有多少个参数。
函数对象有apply、curried(柯里化)、toString、tupled(元组)这些方法。而方法不具有这些特性。
如果想把方法转换成一个函数,可以用方法名跟上下划线的方式。
案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面
方法代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| object FunctionApp { def main(args: Array[String]): Unit = { sayHello("小明")
println(add(1, 2))
defaultValue(null)
variableParameter(1, 2, 3, 4, 5) }
def sayHello(name: String): Unit = { println("Hello " + name) }
def add(x: Int, y: Int): Int = { x + y }
def defaultValue(name: String = "李四"): Unit = { println("你好 " + name) }
def variableParameter(num: Int*) { var count: Int = 0 num.foreach(e => { count += e })
println("总和:" + count) } }
|