Scala 函数

Scala 函数

Scala支持函数式编程方法。它提供了丰富的内置函数,并允许您创建用户定义的函数。

在Scala中,函数是一等值。您可以存储函数值,将函数作为参数传递,并将函数作为其他函数的返回值。您可以使用 def 关键字创建函数。在定义函数时,必须提供参数的返回类型,并且函数的返回类型是可选的。如果不指定函数的返回类型,默认返回类型是Unit。

Scala函数声明语法

def functionName(parameters : typeofparameters) : returntypeoffunction = {
// statements to be executed
}

在上述语法中,=(等号)操作符看起来很奇怪,但不用担心,Scala已经将其定义为:

你可以创建带有或不带=(等号)操作符的函数。如果使用它,函数将返回值。如果不使用它,你的函数将不返回任何东西,并且将像子程序一样工作。

Scala函数不使用返回语句。返回类型由编译器从函数中的最后一个表达式或语句推断出。

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程