Scala 方法与函数
scala 方法与函数
scala 有方法与函数,二者在语义上的区别很小。scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。
scala 中的方法跟 java 的类似,方法是组成类的一部分。
scala 中的函数则是一个完整的对象,scala 中的函数其实就是继承了 trait 的类的对象。
scala 中使用 val 语句可以定义函数,def 语句定义方法。
class test{ def m(x: int) = x + 3 val f = (x: int) => x + 3 }
注意:有些翻译上函数(function)与方法(method)是没有区别的。
1. 方法声明
scala 方法声明格式如下:
def functionname ([参数列表]) : [return type]
如果你不写等于号和方法主体,那么方法会被隐式声明为抽象(abstract),包含它的类型于是也是一个抽象类型。
2. 方法定义
方法定义由一个 def 关键字开始,紧接着是可选的参数列表,一个冒号 : 和方法的返回类型,一个等于号 = ,最后是方法的主体。
scala 方法定义格式如下:
def functionname ([参数列表]) : [return type] = { function body return [expr] }
以上代码中 return type 可以是任意合法的 scala 数据类型。参数列表中的参数可以使用逗号分隔。
以下方法的功能是将两个传入的参数相加并求和:
object add{ def addint( a:int, b:int ) : int = { var sum:int = 0 sum = a + b return sum } }
如果方法没有返回值,可以返回为 unit,这个类似于 java 的 void, 范例如下:
object hello{ def printme( ) : unit = { println("hello, scala!") } }
3. 方法调用
scala 提供了多种不同的方法调用方式:
以下是调用方法的标准格式:
functionname( 参数列表 )
如果方法使用了范例的对象来调用,我们可以使用类似java的格式 (使用 . 号):
[instance.]functionname( 参数列表 )
以上范例演示了定义与调用方法的范例:
object test { def main(args: array[string]) { println( "returned value : " + addint(5,7) ); } def addint( a:int, b:int ) : int = { var sum:int = 0 sum = a + b return sum } }
执行以上代码,输出结果为:
$ scalac test.scala $ scala test returned value : 12
scala 也是一种函数式语言,所以函数是 scala 语言的核心。以下一些函数概念有助于我们更好的理解 scala 编程:
函数概念解析接案例 | ||
---|---|---|
函数传名调用(call-by-name) | 指定函数参数名 | |
函数 - 可变参数 | 递归函数 | |
默认参数值 | 高阶函数 | |
内嵌函数 | 匿名函数 | |
偏应用函数 | 函数柯里化(function currying) |