概述
实践
变量初始化
在Scala中,变量在声明时需要显式指定初始值。可以使用下划线为变量提供初始值,但这种语法仅限于成员变量,不适用于局部变量
导包引入
使用下划线
_
可以导入整个包及其子包下的所有内容,类似于Java中的*
。例如,如果你想要导入Java中的java.lang.Math
,你可以使用import math._
方法转变为函数
在Scala中,方法本身并不是值,而是函数。因此,一个方法不能直接赋值给一个
val
变量,但是可以将方法转换为函数并进行赋值。
object FunctionDemo {
def main(args: Array[String]): Unit = {
test03()
}
def test03(): Unit = {
def sayHello(name: String): Unit = {
println(s"Hell:$name")
}
// 将方法赋值给一个值、变量:空格 下划线
// 下划线 总结
val sayHelloFunc = sayHello _
sayHelloFunc("测试方法变函数")
}
}
执行结果:
用户访问Tuple元素
通过使用下划线,可以直接访问Tuple中的元素。
简化函数参数传递
当函数的参数仅出现一次且参数的类型已知时,可以使用下划线代替参数名称。
object FunctionDemo {
def main(args: Array[String]): Unit = {
test04()
}
def test04(): Unit ={
def foo3(add:(Int,Int)=> Int): Unit ={
println(add(10, 20))
}
foo3(_ + _)
}
}
注意:
- 第一个 _ 表示第一个参数
- 第二个 _ 表示第二个参数
- 每个参数只能使用一次
定义偏函数
偏函数允许将多个参数函数的一部分调用作为单独的函数进行处理。
def test07(): Unit = {
def sum(a:Int,b:Int): Int ={
a + b
}
//s就是偏函数,绑定第一个 a 参数,第二个参数使用下划线 _ 替换缺失的参数列表
val s = sum(1 , _:Int)
println(s(2))
}
相加方法,先固定第一参数的值,变成只需投第二个参数的函数,再调用,结果如下:
变长参数
def test06(): Unit = {
def sum(args: Int*) = {
var result = 0
for (arg <- args) {
result += arg
}
result
}
println(sum(1 to 5: _*))
}
结束
scala下划线使用总结 至此结束,如有疑问,欢迎评论区留言。