Scala函数–声明,定义,调用和嵌套函数

时间:2020-02-23 14:41:46  来源:igfitidea点击:

函数是组合在一起以执行特定任务的一组语句。
该代码可以在逻辑上划分为单独的功能,其中每个功能都分配有特定的任务。

Scala中的函数是一个完整的对象,可以将其分配给变量,而Scala中的方法是具有名称,签名,字节码和注释的类的一部分。
函数名称可以包含++,+,-,–等字符。

可以在称为嵌套函数的函数内部定义函数,与Java不同,Scala支持该函数。

Scala函数声明

声明函数的语法是;

def functionName([arguments]) : return type

例如,

def multiply(a:Int ,b:Int): Int

def是define的简写形式,multiple是函数名。
a和b是Integer数据类型的乘法函数的参数,并且结果返回Integer数据类型。

函数定义

函数定义采用以下形式:

def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}

def是定义函数的关键字,functionName是函数的名称,参数列表是用逗号分隔的变量,返回类型是返回值的数据类型。
函数主体包含逻辑和return关键字,可在函数返回值的情况下与表达式一起使用。

例如;

def multiply(a:Int,b:Int) : Int = {
var c : Int = 0
c = a*b
return c;
}

乘法是具有两个变量a和b的函数的名称。
我们声明另一个整数数据类型的变量c,将a * b的结果存储在此变量中并返回计算出的变量c。

通过在Scala shell中键入multiply(50,20)来运行程序,您将得到类似res0:Int = 1000的输出。

一个不返回任何东西的函数可以返回Unit,它等于Java中的void。
不返回任何内容的函数在scala中称为过程。

def hello( ) : Unit = {
println("Hello, World!")
}

其中我们只是打印问候世界,因此返回数据类型为Unit。

输入" hello"运行程序,您将得到" Hello,World!"的输出。

让我们通过结合声明和定义来查看功能的完整示例,并通过创建对象来测试功能。

object mult {

def main(args:Array[String]) {
println("Multiplication result of two numbers is : "+multiply(20,21));
}

def multiply( a:Int, b:Int ) : Int = {
var c:Int = 0
c = a * b
return c
}
}

行""def乘法(a:Int,b:Int):Int"是函数声明," var c:Int = 0,c = a * b"构成函数体。
return c是函数的返回值。
这三个声明,定义和返回类型都构成一个完整的函数。

通过键入mult.main(null)运行上面的功能代码,并看到如下结果。

两个数字相乘的结果是:420

调用功能

在Scala中调用函数的方式是:

functionName( list of parameters )

例如,

multiply(4,3)

我们还可以创建一个实例并以以下形式调用该函数:

[instance.]functionName( list of parameters )

例如,

test.multiply(5,6)

考虑一个调用函数的例子;

object multest {

def main(args: Array[String]) {
println( "Result is : " + multiply(12,14) );
}

def multiply( a:Int, b:Int ) : Int = {
var c:Int = 0
c = a * b
return c
}
}

我们正在创建一个对象multest,并定义一个方法乘法,该方法接受两个整数数据类型的变量a和b,然后执行a和b变量的乘法,将运算结果存储在变量c中。
我们正在编写main方法,并与参数一起调用函数multiple(12,14)。

通过在scala shell中键入" multest.main(null)"来运行上面的代码,并看到以下输出;

结果是:168

现在让我们看一个示例,该示例如何通过创建实例来调用函数。

class Multiplication {

def multiply(a : Int , b: Int ) :Int = {
var c : Int = 0
c = a * b
return c
}
}

创建乘法类,并使用变量a和b定义乘法函数,并返回变量c,该变量存储传递的两个变量的相乘结果。

创建一个对象multest,并将方法Multiplication class的创建实例乘以调用方法;

object multest {

def main(args:Array[String]) {
var mul = new Multiplication()
println( "Result is : " +mul.multiply(15,16));
}
}

mul是Multiplication类的实例,该方法称为mul.multiply(15,16)。

输入multest.main(null)在shell中运行代码,产生以下输出。

结果是:240

嵌套函数

在另一个函数内部定义的函数称为嵌套函数。
Scala与Java的不同之处在于此功能,因为Java中不支持嵌套函数。

考虑一个嵌套函数的例子。

def min(x: Int, y: Int, z: Int) = {
def min(i: Int, j: Int) = if (i < j) i else j
min(x,min(y,z))
}

min方法接受Integer类型的三个参数x,y和z,然后再次定义min func,以首先找到两个数的最小值,然后使用找到的两个数的结果以及找到的最小值。
首先定义最少3个数字的函数,然后再定义最少2个数字,这些被称为嵌套函数。

通过将min函数调用为min(12,34,6)来运行上述代码,您将得到结果为res21:Int = 6。

嵌套函数不必具有相同的名称,它们也可以具有不同的名称。