Scala - 函数
函数是一组执行任务的语句。 您可以将代码分成单独的函数。 如何在不同的功能之间划分代码取决于您,但从逻辑上讲,划分通常是为了让每个功能执行特定的任务。
Scala 既有函数也有方法,我们可以互换使用术语方法和函数,但差别不大。 Scala 方法是类的一部分,它具有名称、签名、可选的一些注释和一些字节码,其中作为 Scala 中的函数是可以分配给变量的完整对象。 换句话说,定义为某个对象的成员的函数称为方法。
函数定义可以出现在源文件中的任何位置,Scala 允许嵌套函数定义,即在其他函数定义中的函数定义。 需要注意的最重要的一点是 Scala 函数的名称可以包含 +, ++, ~, &,-, --, \, /, : 等字符。
函数声明
Scala 函数声明具有以下形式 −
def functionName ([list of parameters]) : [return type]
如果不使用等号和方法体,方法会被隐式声明为 abstract。
函数定义
Scala 函数定义具有以下形式 −
语法
def functionName ([list of parameters]) : [return type] = { function body return [expr] }
这里,return type 可以是任何有效的 Scala 数据类型,list of parameters 将是由逗号分隔的变量列表,并且参数列表和返回类型是可选的。 与 Java 非常相似,return 语句可以与表达式一起使用,以防函数返回值。 以下是将两个整数相加并返回其和的函数 −
语法
object add { def addInt( a:Int, b:Int ) : Int = { var sum:Int = 0 sum = a + b return sum } }
一个不返回任何内容的函数可以返回一个 Unit,它等同于 Java 中的 void,表示该函数不返回任何内容。 在 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 函数相关的几个重要概念。
按名称调用的函数 | 具有命名参数的函数 |
带可变参数的函数 | 递归函数 |
默认参数值 | 高阶函数 |
嵌套函数 | 匿名函数 |
部分应用函数 | Currying 函数 |