簡體   English   中英

->在scala中是什么意思

[英]What's the meaning of -> in scala

當我讀《 scala中的功能編程》這本書時。 我發現這樣的表達:

case (Cons(h, t), Empty) => 
    Some(f(Some(h()), Option.empty[B]) -> (t(), empty[B]))

之間有什么區別

Some(f(Some(h()), Option.empty[B]), (t(), empty[B]))

如果您的第二個示例可以編譯,則應在編譯時發出警告: creating a 2-tuple: this may not be what you want否則它將失敗,因為Some()不使用兩個參數。 第一個示例應該編譯,因為->顯式創建了元組以作為單個參數發送到(外部) Some()

創建包含兩個元素的元組時,可以選擇使用括號和逗號(5, true)或箭頭5 -> true 在大多數情況下,使用箭頭版本時,括號是可選的。

如果需要兩個以上的元素(即, 嵌套元組),則不能使用箭頭:

'c' -> 'b' -> 'x'
//res0: ((Char, Char), Char) = ((c,b),x)

->實際上是ArrowAssoc類的方法,每個對象都可以隱式轉換為該方法。 參見對象scala.Predef 它定義為:

def -> [B](y: B): Tuple2[A, B] = Tuple2(x, y)

這意味着1 -> 2等效於1.->(2) ,其結果為Tuple2(1, 2) 本書(第3版)的21.4節也對此進行了說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM