Scala中的下劃線(underscore)到底有多少種應用場景?

  1. 作為"通配符”,import導入包的所有成員,類似Java中的*。如import scala.math._

  2. _*作為一個整體,告訴編譯器你希望將某個參數當作參數序列處理!例如val s = sum(1 to 5:_*)就是將1 to 5當作參數序列處理。

  3. 占位符,指代一個集合中的每個元素。比如對collection或sequence調用方法map、filter、sortWith、foreach等等表示對每一個元素進行處理。例如我們要在一個Array a中篩出偶數,并乘以2,可以用以下辦法:
    a.filter(%2==0).map(2*)
    List(1,2,3).foreach(println(_))

  4. 在元組中,可以用方法_1, _2, _3訪問組員。如a._2。其中句點可以用空格替代。
    ("a","b","c")._3

  5. 使用模式匹配可以用來獲取元組的組員,n來取得第n個元素。
    例如:
    val t = ("a","b","c")
    val (first, second, third) = t
    但如果不是所有的部件都需要,那么可以在不需要的部件位置上使用
    。
    比如上一例中val (first, second, _) = t

  6. 下劃線代表的是某一類型的默認值,對變量進行默認初始化。
    對于Int來說,var i:Int=
    ,i是0。
    對于Double來說,它是0.0
    對于引用類型,它是null。
    List(1,2,3).foreach(println(_))

  7. 類的setter方法,比如類A中定義了var f,則相當于定義了setter方法 f_=。也可以自己定義f_= 方法來完成更多的事情,比如設置前作一些判斷或預處理之類的操作

善用google和stackoverflow:

What are all the uses of an underscore in Scala?

scala在線學習

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容