本文概述
- Scala函数声明语法
- 不使用=运算符的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
}
}
【Scala函数介绍和用法完全解读】输出
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
推荐阅读
- Scala条件表达式图解和用法
- Scala for循环语句用法示例
- Scala三种注释用法示例
- mybatis源码配置文件解析之五(解析mappers标签(解析XML映射文件))
- Power Apps visual for Power BI
- uni-app 左上角返回按钮消失
- The supplied data appears to be in the Office 2007+ XML.You are calling the part of POI that deals w
- 区分 BeanFactory 和 ApplicationContext()
- 简单两步实现Android app 本地设置信息的保存与调用