本文概述
- Scala示例:在函数中将函数作为参数传递
- Scala示例:函数组成
- Scala匿名(lambda)函数
- Scala匿名函数示例
- Scala多行表达
- Scala多行表达式示例
- Scala示例多行表达式
- Scala函数库
- Scala函数库示例
- Scala嵌套函数
- Scala嵌套函数示例
- 具有可变长度参数的Scala函数
- Scala示例:具有可变长度参数的函数
高阶函数允许你创建函数组成, lambda函数或匿名函数等。
让我们来看一个例子。
Scala示例:在函数中将函数作为参数传递
object MainObject {
def main(args: Array[String]) = {
functionExample(25, multiplyBy2)// Passing a function as parameter
}
def functionExample(a:Int, f:Int=>
AnyVal):Unit = {
println(f(a))// Calling that function
}
def multiplyBy2(a:Int):Int = {
a*2
}
}
输出
60
Scala示例:函数组成在scala中, 函数可以由其他函数组成。这是一个组合过程, 其中一个函数代表两个组合函数的应用。
【Scala高阶函数用法示例和解释详解】让我们来看一个例子。
object MainObject {
def main(args: Array[String]) = {
var result = multiplyBy2(add2(10))// Function composition
println(result)
}
def add2(a:Int):Int = {
a+2
}def multiplyBy2(a:Int):Int = {
a*2
}
}
输出
24
Scala匿名(lambda)函数匿名函数是没有名称但可以作为函数使用的函数。当你不想在以后重用匿名函数时, 最好创建一个匿名函数。
你可以通过在Scala中使用=> (火箭)或_(下划线)通配符来创建匿名函数。
让我们来看一个例子。
Scala匿名函数示例
object MainObject {
def main(args: Array[String]) = {
var result1 = (a:Int, b:Int) =>
a+b// Anonymous function by using =>
(rocket)
var result2 = (_:Int)+(_:Int)// Anonymous function by using _ (underscore) wild card
println(result1(10, 10))
println(result2(10, 10))
}
}
输出
20
20
Scala多行表达用多行编写的表达式称为多行表达式。在scala中, 使用多行表达式时要小心。
下面的程序说明了如果我们将表达式分成多行, 则scala编译器将发出警告消息。
Scala多行表达式示例
def add1(a:Int, b:Int) = {
a
+b
}
上面的程序不评估完整的表达式, 只是在这里返回b。因此, 使用多行表达式时要小心。
输出
MainObject.scala:3: warning: a pure expression does nothing in statement
position;
you may be omitting necessary parentheses
a
^
one warning found10
你可以采用以下方法来避免上述问题。
Scala示例多行表达式
object MainObject {
def add2(a:Int, b:Int) = {
a+
b
}
def add3(a:Int, b:Int) = {
(a
+b)
}
def main(args: Array[String]) = {
var result2 = add2(10, 10)
var result3 = add3(10, 10)
println(result2+"\n"+result3)
}
}
输出
20
20
Scala函数库在scala中, 方法可能具有多个参数列表。当使用较少数量的参数列表调用方法时, 这将产生一个以缺少的参数列表作为参数的函数。
换句话说, 它是一种将带有多个参数的函数转换为带有单个参数的函数的技术。
Scala函数库示例
object MainObject {
def add(a:Int)(b:Int) = {
a+b
}
def main(args: Array[String]) = {
var result = add(10)(10)
println("10 + 10 = "+result)
var addIt = add(10)_
var result2 = addIt(3)
println("10 + 3 = "+result2)
}
}
输出
20
Scala嵌套函数Scala是一流的函数语言, 这意味着它使你可以传递函数, 返回函数, 组合函数, 嵌套函数等。下面的示例解释了如何定义和调用嵌套函数。
Scala嵌套函数示例
object MainObject {
def add(a:Int, b:Int, c:Int) = {
def add2(x:Int, y:Int) = {
x+y
}
add2(a, add2(b, c))
}
def main(args: Array[String]) = {
var result = add(10, 10, 10)
println(result)
}
}
输出
30
具有可变长度参数的Scala函数在scala中, 你可以定义可变长度参数的函数。它允许你在调用函数时传递任意数量的参数。
让我们来看一个例子。
Scala示例:具有可变长度参数的函数
def add(args: Int*) = {
var sum = 0;
for(a <
- args) sum+=a
sum
}
var sum = add(1, 2, 3, 4, 5, 6, 7, 8, 9);
println(sum);
输出
45
推荐阅读
- Scala方法重载用法示例
- Scala属性覆盖介绍和用法示例
- Scala case类和case对象用法详细示例
- Android中使用XUI引入各种UI组件
- android stdio 安装后gradle 编译失败,设置代理不管用
- AndroidStudio中debug.keystore文件不存在解决办法
- 高通推出新的智能手表芯片,为安卓系统注入新的活力
- Jenkins+Gradle实现Android移动端自动打包+邮件发送通知
- java配合uniapp的微信支付商户转账等解决方案