功能( Functions)
函数是执行任务的一组语句。 您可以将代码划分为单独的函数。 如何在不同的函数之间划分代码取决于您,但从逻辑上讲,除法通常是每个函数执行特定任务。
Scala既有函数又有方法,我们使用术语方法和函数可以互换,只有细微差别。 Scala方法是类的一部分,它具有名称,签名,可选的一些注释和一些字节码,其中Scala中的函数是可以分配给变量的完整对象。 换句话说,被定义为某个对象的成员的函数称为方法。
函数定义可以出现在源文件中的任何位置,Scala允许嵌套函数定义,即其他函数定义中的函数定义。 最重要的一点是,Scala函数的名称可以包含+,++,〜,&, - , - ,\,/,等等字符。
函数声明 (Function Declarations)
Scala函数声明具有以下形式 -
def functionName ([list of parameters]) : [return type]
如果不使用等号和方法体,则隐式声明方法为abstract 。
功能定义
Scala函数定义具有以下形式 -
语法 (Syntax)
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}
这里, return type可以是任何有效的Scala数据类型list of parameters将是由逗号分隔的变量列表,参数列表和返回类型是可选的。 与Java非常相似, return语句可以与表达式一起使用,以防函数返回值。 以下是将添加两个整数并返回其总和的函数 -
语法 (Syntax)
object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
一个不返回任何东西的函数可以返回一个相当于Java中的void的Unit ,并指示该函数不返回任何内容。 在Scala中没有返回任何内容的函数,它们被称为过程。
语法 (Syntax)
这是语法 -
object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
}
}
Calling 函数
Scala为调用方法提供了许多语法变体。 以下是调用方法的标准方法 -
functionName( list of parameters )
如果使用对象的实例调用函数,那么我们将使用类似于Java的点符号,如下所示 -
[instance.]functionName( list of parameters )
尝试以下示例程序来定义然后调用相同的函数。
例子 (Example)
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 。 以下命令用于编译和执行此程序。
Command
\>scalac Demo.scala
\>scala Demo
输出 (Output)
Returned Value : 12
Scala函数是Scala编程的核心,这也是Scala被假定为函数式编程语言的原因。 以下是与Scala函数相关的一些重要概念,Scala程序员应该理解这些概念。
函数Call-by-Name | 具有命名参数的函数 |
具有变量参数的函数 | 递归函数 |
默认参数值 | 高阶函数 |
嵌套函数 | 匿名函数 |
部分应用功能 | Currying功能 |