[英]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.