scala定义函数的标准格式为:
def 函数名(参数名1: 参数类型1, 参数名2: 参数类型2) : 返回类型 = {函数体}
def shout1(content: String) : Unit = {
println(content)
}
def shout2(content: String) = {
println(content)
}
def shout3(content: String) = {
if(content.length >= 3)
content + "喵喵喵~"
else
3
}
def shout4(content: String, leg: Int = 4) = {
println(content + "," + leg)
}
def sum(args: Int*) = {
var result = 0
for(arg <- args)
result += arg
result
}
def factorial(n: Int): Int = {
if(n <= 0)
1
else
n * factorial(n - 1)
}
注意 1、Scala可以通过=右边的表达式 推断出函数的返回类型。如果函数体需要多个表达式,可以用代码块{}。 2、可以把return 当做 函数版本的break语句。 3、递归函数一定要指定返回类型。 4、变长参数通过*来指定,所有参数会转化为一个seq序列。
我们将函数的返回类型为Unit的函数称之为过程。
def shout1(content: String) : Unit = {
println(content)
}
def shout1(content: String) = {
println(content)
}
注意:这只是一个逻辑上的细分,如果因为该概念导致了理解上的混淆,可以暂时直接跳过过程这样的描述。毕竟过程,在某种意义上也是函数。
当val被声明为lazy时,他的初始化将被推迟,直到我们首次对此取值,适用于初始化开销较大的场景。
object Lazy {
def init(): String = {
println("init方法执行")
"嘿嘿嘿,我来了~"
}
def main(args: Array[String]): Unit = {
lazy val msg = init()
println("lazy方法没有执行")
println(msg)
}
}