Scala 函数
函数是执行任务的一组语句。您可以将代码分成不同的函数。如何在不同函数之间划分代码由您决定,但从逻辑上讲,划分通常是每个函数执行特定任务。
Scala既有函数也有方法,我们在使用这两个术语时可以互换,但有一个小差别。Scala方法是一个类的一部分,它有一个名称、一个签名、可选的一些注解和一些字节码,而Scala函数是一个完整的对象,可以赋值给一个变量。换句话说,定义为某个对象的成员的函数称为方法。
函数定义可以出现在源文件的任何位置,Scala允许嵌套函数定义,也就是在其他函数定义内部定义函数。最重要的注意点是,Scala函数的名称可以包含字符+、++、~、&、-、–、\、/、:等。
函数声明
Scala函数声明的形式如下−
def functionName ([list of parameters]) : [return type]
如果您不使用等号和方法体,方法将隐式声明为抽象。
函数定义
Scala函数定义的形式如下 –
语法
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}
这里, 返回类型 可以是任何有效的Scala数据类型, 参数列表 是一系列由逗号分隔的变量,参数列表和返回类型都是可选的。与Java非常相似,如果函数返回一个值,可以使用 return 语句和表达式。下面是一个将两个整数相加并返回它们的和的函数:
语法
object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
一个不返回任何东西的函数可以返回一个等同于Java中的 Unit 的值, 表示函数不返回任何东西。在Scala中,不返回任何东西的函数被称为过程函数。
语法
以下是语法:
object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
}
}
调用函数
Scala为调用方法提供了多种语法变体。以下是调用方法的标准方式 –
functionName( list of parameters )
如果使用对象的实例调用一个函数,则可以使用类似Java的点表示法,如下所示:
[instance.]functionName( list of parameters )
尝试以下示例程序来定义并调用相同的函数。
示例
object Demo {
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
}
}
将上述程序保存在 Demo.scala 中。使用以下命令来编译和执行这个程序。
命令
>scalac Demo.scala
\>scala Demo
输出
Returned Value : 12
Scala函数是scala编程的核心,这也是为什么Scala被认为是一种函数式编程语言。以下是与Scala函数相关的几个重要概念,这些概念应该由Scala程序员理解。
函数的按名称调用 | 具有命名参数的函数 |
---|---|
具有可变参数的函数 | 递归函数 |
默认参数值 | 高阶函数 |
嵌套函数 | 匿名函数 |
部分应用的函数 | 柯里化函数 |