Scala教程
Scala面向对象
Scala高级

Scala 函数

Scala 函数

Scala 支持函数式编程方法。它提供了丰富的内置函数集,还允许您创建用户定义的函数。
在 Scala 中,函数是第一类值。您可以存储函数值,将函数作为参数传递,并将函数作为其他函数的值返回。您可以使用 def 关键字创建函数。定义函数时必须提到参数的返回类型,函数的返回类型是可选的。如果不指定函数的返回类型,则默认返回类型为 Unit。

Scala 函数声明语法

def functionName(parameters : typeofparameters) : returntypeoffunction = {
// statements to be executed
}
在上面的语法中,=(相等)运算符看起来很奇怪,但不用担心scala 已将其定义为:
您可以使用或不使用=(相等)运算符创建函数。如果使用它,函数将返回值。如果你不使用它,你的函数将不会返回任何东西并且会像子程序一样工作。
Scala 函数不使用 return 语句。编译器根据函数中出现的最后一个表达式或语句推断返回类型。

不使用 = 运算符的 Scala 函数示例

下面定义的函数也称为非参数化函数。
object MainObject {
   def main(args: Array[String]) {
        functionExample()           // Calling function
    }
    def functionExample()  {        // Defining a function
          println("this is a simple function")
    }
}
输出:
this is a simple function

带有 = 运算符的 Scala 函数示例

object MainObject {
   def main(args: Array[String]) {
        var result = functionExample()             // Calling function
        println(result)
    }
    def functionExample() = {       // Defining a function
          var a = 10
          a
    }
}
输出:
10

Scala 参数化函数示例

使用参数化函数时,必须明确提及参数类型,否则编译器会抛出错误并且您的代码无法编译。
object MainObject {
   def main(args: Array[String]) = {
        functionExample(10,20) 
    }
    def functionExample(a:Int, b:Int) = {
          var c = a+b
          println(c)
    }
}
输出:
30

Scala 递归函数

在下面给出的程序中,我们使用递归函数将两个数字相乘。
在 Scala 中,您可以创建递归函数也。使用递归函数时要小心。必须有一个基本条件才能安全地终止程序。
object MainObject {
   def main(args: Array[String]) = {
        var result = functionExample(15,2) 
        println(result)
    }
    def functionExample(a:Int, b:Int):int = {
        if(b == 0)          // Base condition
         0
        else
         a+functionExample(a,b-1)
    }
}
输出:
30

具有默认值的函数参数

Scala 提供了为函数参数分配默认值的功能。在函数调用期间不传递值的情况下,它会有所帮助。它使用参数的默认值。
让我们看一个例子。

带默认值的Scala函数参数示例

object MainObject {
   def main(args: Array[String]) = {
        var result1 = functionExample(15,2)    // Calling with two values
        var result2 = functionExample(15)  // Calling with one value
        var result3 = functionExample()        // Calling without any value
        println(result1+"\n"+result2+"\n"+result3)
    }
    def functionExample(a:int = 0, b:int = 0):int = {    // Parameters with default values as 0
        a+b
    }
}
输出:
17
15
0

Scala 函数命名参数示例

在Scala 函数中,您可以在调用函数时指定参数名称。在给定的示例中,您可以注意到参数名称在调用期间正在传递。您可以按任何顺序传递命名参数,也可以只传递值。
让我们看一个例子。
object MainObject {
   def main(args: Array[String]) = {
        var result1 = functionExample(a = 15, b = 2)    // Parameters names are passed during call
        var result2 = functionExample(b = 15, a = 2)    // Parameters order have changed during call
        var result3 = functionExample(15,2)             // Only values are passed during call
        println(result1+"\n"+result2+"\n"+result3)
    }
    def functionExample(a:Int, b:Int):int = {
        a+b
    }
}
输出:
17
17
17
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4