1. 程式人生 > 其它 >Scala 下劃線用法總結

Scala 下劃線用法總結

Scala 是一門以 java 虛擬機器(JVM)為執行環境並將面向物件和函數語言程式設計的最佳特性結合在一起的靜態型別程式語言。scala 單作為一門語言來看, 非常的簡潔高效,在 Scala 中存在很多讓程式碼更加簡潔的語法,下劃線“_”便是其中一個。下劃線的普遍用法總結如下:

  1. 用於變數初始化

在 Java 中,可以宣告變數而不必給出初始值,在 Scala 中,變數在宣告時必須顯示指定,可以使用下劃線對變數進行初始化。而且該語法只適用於成員變數,不適用於區域性變數。例:

class Student{
//String型別的預設值為null
var name:String=-
  1. 用於導包引入

導包引入時使用_匯入該包下所有內容,類比 Java 中的*。例如:

//Java
import java.util.*1/Scala
Import java.uti.

3.用於將方法轉變為函式

在 Scala 中方法不是值,而函式是。所以一個方法不能賦值給一個 val 變數,而函式可以。方法可以轉換為函式賦值給變數,例:

//將println方法轉換成函式。
井賦值給pval p = printin_

  1. 用於模式匹配

模式匹配中可以用下劃線來作為 Java 中 default 的類比使用,也可以在匹配集合型別時,用於代表集合中元素,例:
val t =(1,2,3)
printIn(t._1, t_2,t._3)

str match{
case "1" => printIn("match 1"7)
case_=>printin("match default")
/匹配以0開頭,長度為三的列表
expr match [
case List(O,, ) => printin("found it)case _=>
//莧配以0開頭,長度任衰的列表expr match {
case List(0,_) =>printin("found it)case_=>
)
//匹配元組元素expr match [
case (0,)=> printin("found it)case_ =>
1/將首元素賦值給head變數val Lst(head,_)= List(a7)
  1. 用於訪問 tuple 元素

例:

val t =(1,2,3)
printIn(t._1, t_2,t._3)

  1. 用於簡寫函式

如果函式的引數在函式體只出現一次,則可以用下劃線代替。

val nums = List(1,2,3.4,5.6,7,8,9,10)nums.map (+2)
nums.sortWith_>nums.filter(%2== O)

  1. 定義偏函式

對某個多引數函式進行部分函式呼叫,大資料培訓沒有傳入的引數使用_代替,返回結果即為偏函式。例:
def sum(a: lnt, b: Int, c: Int)= a+b+cval b = sum(1,_: Int,3)
b: Int => Int = cfunction1>b(2)//6