scala中函数与方法的讲解:
1.两者的同异点:
① 二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。
② Scala 中的方法跟 Java 的类似,方法是组成类的一部分。
③ Scala 中的函数则是一个完整的对象,Scala 中的函数其实就是继承了 Trait 的类的对象。
④Scala 中使用 val 语句可以定义函数,def 语句定义方法。
⑤函数必须要有参数列表,而方法可以没有参数列表
2.方法的声明
def functionName ([参数列表]) : [return type]
举例:
class Test{
def a(x: Int): Int
}
注意:如果你不写等于号和方法主体,那么方法会被隐式声明为抽象(abstract),包含它的类型于是也是一个抽象类型。
3.方法的定义
说明:方法定义由一个 def 关键字开始,紧接着是可选的参数列表,一个冒号 : 和方法的返回类型,一个等于号 = ,最后是方法的主体。
格式1
def functionName ([参数列表]) : [return type] = {
function body
return [expr]
}
注意:以上代码中 return type 可以是任意合法的 Scala 数据类型。参数列表中的参数可以使用逗号分隔。
举例:求传入的一个数的平方
object Test{
def ansInt( a:Int ) : Int = {
var ans:Int = 0
ans = a * a
return ans
}
}
格式2
object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
}
}
说明:如果方法没有返回值,可以返回为 Unit,这个类似于 Java 的 void。
4.方法的调用
①标准格式:
functionName( 参数列表 )
②如果方法使用了实例的对象来调用,我们可以使用类似java的格式 (使用 . 号):
[instance.]functionName( 参数列表 )
实例:
object Test{
def ansInt( a:Int ) : Int = {
var ans:Int = 0
ans = a * a
return ans
}
def main(args: Array[String]): Unit = {
print(ansInt(4))
}
}
5.函数的声明
- 声明
val f1 = (x:Int,y:Int) => x + y
- 注意点:在Scala中无法直接操作方法,如果要操作方法,必须先将其转换成函数。
方法一:
val f = ansInt _
方法二:
val f: (Int) => Int = ansInt
说明:_线可以直接将方法转化为函数