柚子快報(bào)邀請(qǐng)碼778899分享:12.scala下劃線使用總結(jié)
柚子快報(bào)邀請(qǐng)碼778899分享:12.scala下劃線使用總結(jié)
目錄
概述實(shí)踐變量初始化導(dǎo)包引入方法轉(zhuǎn)變?yōu)楹瘮?shù)用戶訪問Tuple元素簡化函數(shù)參數(shù)傳遞定義偏函數(shù)變長參數(shù)
結(jié)束
概述
實(shí)踐
變量初始化
在Scala中,變量在聲明時(shí)需要顯式指定初始值??梢允褂孟聞澗€為變量提供初始值,但這種語法僅限于成員變量,不適用于局部變量
導(dǎo)包引入
使用下劃線_可以導(dǎo)入整個(gè)包及其子包下的所有內(nèi)容,類似于Java中的*。例如,如果你想要導(dǎo)入Java中的java.lang.Math,你可以使用import math._
方法轉(zhuǎn)變?yōu)楹瘮?shù)
在Scala中,方法本身并不是值,而是函數(shù)。因此,一個(gè)方法不能直接賦值給一個(gè)val變量,但是可以將方法轉(zhuǎn)換為函數(shù)并進(jìn)行賦值。
object FunctionDemo {
def main(args: Array[String]): Unit = {
test03()
}
def test03(): Unit = {
def sayHello(name: String): Unit = {
println(s"Hell:$name")
}
// 將方法賦值給一個(gè)值、變量:空格 下劃線
// 下劃線 總結(jié)
val sayHelloFunc = sayHello _
sayHelloFunc("測試方法變函數(shù)")
}
}
執(zhí)行結(jié)果:
用戶訪問Tuple元素
通過使用下劃線,可以直接訪問Tuple中的元素。
簡化函數(shù)參數(shù)傳遞
當(dāng)函數(shù)的參數(shù)僅出現(xiàn)一次且參數(shù)的類型已知時(shí),可以使用下劃線代替參數(shù)名稱。
object FunctionDemo {
def main(args: Array[String]): Unit = {
test04()
}
def test04(): Unit ={
def foo3(add:(Int,Int)=> Int): Unit ={
println(add(10, 20))
}
foo3(_ + _)
}
}
注意:
第一個(gè) _ 表示第一個(gè)參數(shù)第二個(gè) _ 表示第二個(gè)參數(shù)每個(gè)參數(shù)只能使用一次
定義偏函數(shù)
偏函數(shù)允許將多個(gè)參數(shù)函數(shù)的一部分調(diào)用作為單獨(dú)的函數(shù)進(jìn)行處理。
def test07(): Unit = {
def sum(a:Int,b:Int): Int ={
a + b
}
//s就是偏函數(shù),綁定第一個(gè) a 參數(shù),第二個(gè)參數(shù)使用下劃線 _ 替換缺失的參數(shù)列表
val s = sum(1 , _:Int)
println(s(2))
}
相加方法,先固定第一參數(shù)的值,變成只需投第二個(gè)參數(shù)的函數(shù),再調(diào)用,結(jié)果如下:
變長參數(shù)
def test06(): Unit = {
def sum(args: Int*) = {
var result = 0
for (arg <- args) {
result += arg
}
result
}
println(sum(1 to 5: _*))
}
結(jié)束
scala下劃線使用總結(jié) 至此結(jié)束,如有疑問,歡迎評(píng)論區(qū)留言。
柚子快報(bào)邀請(qǐng)碼778899分享:12.scala下劃線使用總結(jié)
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。