[public | private | protected] def 函数名(参数列表) : 返回值声明 = {函数体}
注意事项
函数通过def关键字定义
def前面可以具有修饰符,可以通过private、protected来控制其访问权限。注意默认访问权限是public
还可使用override、final等关键字修饰
函数体中return关键字往往可以省略掉,一旦省略掉,函数将会返回整个函数体中最后一行表达式的值,这也要求整个函数体的最后一行必须是正确类型的值的表达式
scala一般都可以自动推断出返回值类型,所以通常返回值类型声明可以省略,但是注意,如果因为省略了返回值类型造成歧义,则一定要写上返回值声明
如果函数体只有一行内容,则包裹函数体的大括号可以省略
如果返回值类型是Unit,则另一种写法是可以去掉返回值类型和等号,把方法体写在花括号内,而这时方法内无论返回什么,返回值都是Unit
(1)加法函数
package net.hw.func
import scala.io.StdIn
object Example01 {
def add1(a: Int, b: Int): Int = {
return a + b
}
def add2(a: Int, b: Int): Int = {
a + b
}
def add3(a: Int, b: Int) = {
a + b
}
def add4(a: Int, b: Int) = a + b
def add5(a: Int, b: Int) {
println(a + " + " + b + " = " + (a + b))
}
def main(args: Array[String]): Unit = {
print("a = ")
val a = StdIn.readLine().toInt
print("b = ")
val b = StdIn.readLine().toInt
println(a + " + " + b + " = " + add1(a, b))
println(a + " + " + b + " = " + add2(a, b))
println(a + " + " + b + " = " + add3(a, b))
println(a + " + " + b + " = " + add4(a, b))
add5(a, b)
}
}
运行程序,查看结果
(二)隐式声明函数
(参数列表) => {函数体}
注意事项
如果函数体只有一行,那么大括号可以省略
如果参数类型可以推测得知,那么参数列表中类型声明可以省略
如果函数参数列表中只有一个参数,在不会产生歧义的情况下,小括号可以省略
(1)加法函数
package net.hw.func
import scala.io.StdIn
object Example02 {
val add1 = (a: Int, b: Int) => {a + b}
val add2 = (a: Int, b: Int) &#