Scala中有函数和方法,二者在语义上区别很小。Scala方法是类的一部分,而函数是一个对象,可以赋值给一个变量,换句话说,在类中定义的函数就是方法。我们可以在任何地方定义函数,甚至可以可以在一个函数内部定义另一个函数(内嵌函数)。更重要的一点是:Scala函数名可以含有以下特殊字符:+,++,~,&,-,–,\,/,:等。
1.函数声明
Scala函数声明格式如下:
def functionName ([参数列表]) : [return type]
如果你不写等于号和方法主体,那么函数会被隐式地声明为“抽象的(abstract)”,包含它的类型也是一个抽象类型。
2.函数定义
函数的定义由一个def关键字开始,紧接着是可选的参数列表,一个冒号”:”和函数的返回值类型,一个等于号”=”,最后是函数的主体。函数定义的格式如下:
def functionName ([参数列表]) : [return type] = {
function body
return [expr]
}
其中的return [expr]的类型可以是任意合法的Scala数据类型,参数列表中的参数之间使用逗号”,”分隔。
以下函数的功能是将传入的两个整数求和:
object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}:
在Scala环境中执行调用结果如下:
scala> :paste
// Entering paste mode (ctrl-D to finish)object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}// Exiting paste mode, now interpreting.
defined object add
scala> add.addInt(1,2)
res0: Int = 3
如果函数没有返回值,可以返回为Unit,这个类似于Java中void类型,实例如下:
object Hello {
def printMe() : Unit = {
println("Hello, Scala!")
}
}
在Scala环境中执行调用结果如下:
scala> :paste
// Entering paste mode (ctrl-D to finish)object Hello {
def printMe() : Unit = {
println("Hello, Scala!")
}
}// Exiting paste mode, now interpreting.
defined object Hello
scala> Hello.printMe()
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;
}
}
编译并执行以上代码,输出结果为:
E:\Test>scalac Test.scala
E:\Test>scala Test
Returned Value : 12
Scala是一种函数式编程语言,所以函数是Scala的核心。接下来几篇文章将详细讲解Scala中的函数相关知识。本节先到这里。
网友评论