Mar*_*ins 5 methods scala function scalastyle
我正处于学习Scala的早期阶段,我注意到了声明方法的不同方法.
我已经确定不使用等号使方法成为一个void方法(返回一个Unit而不是一个值),并使用等号返回实际值,所以
def product(x: Int, y: Int) {
x*y
}
Run Code Online (Sandbox Code Playgroud)
将返回()(单位),但是
def product(x: Int, y: Int) = {
x*y
}
Run Code Online (Sandbox Code Playgroud)
将返回两个参数的乘积(x*y)
我注意到了第三种声明方法 - 用冒号.这是一个例子
def isEqual(x: Any): Boolean
Run Code Online (Sandbox Code Playgroud)
这与=符号有何不同?在什么情况下最好用这种方式?
Ser*_*tin 11
当您使用冒号(并使用相等)时,您显式定义方法的返回类型.
// method return Boolean value
def m(a : Int) : Boolean = a > 0
Run Code Online (Sandbox Code Playgroud)
当你不使用冒号并使用相等时,你允许scala编译器推断返回类型本身.
// method has return type of last expression (Boolean)
def m(a : Int) = a > 0
Run Code Online (Sandbox Code Playgroud)
当你既不使用冒号也不等于你的方法时返回Unit类的类型.
// method has Unit return type
def m(a : Int){
a > 0
}
Run Code Online (Sandbox Code Playgroud)