2016-06-21 57 views

回答

3

這裏是「捷徑」經營者的定義:

def /:[B](z: B)(op: (B, A) => B): B = foldLeft(z)(op) 

如果操作者用冒號結束,這是一個右結合。 1 :: Nil是另外一個例子,對Int

沒有方法::這一切工作:

  • (1 to 5)./:(10)(_ + _)
  • ((1 to 5) foldLeft 10)(_ + _)(幾乎相同的例子, 但在這裏它更明顯,foldLeft居然是方法 範圍對象)
  • (1 to 5).foldLeft(10)(_ + _)
+0

::不是一個方法,它是一個具有應用和不適用方法的對象 –

+0

你確定嗎? http://www.scala-lang.org/api/current/index.html#[email protected]::(x:A):List[A] –

+0

我們都是對的,這裏是'::'case類(=>(un)apply):http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.$colon$colon –

0

您的問題並不完全清楚(您的表達式中沒有提及n),但是:以冒號結尾的運算符在右側參數中被解釋爲方法,而不是左側。您的表達式相當於

(1 to 5)./:(10)(_ + _) 

其中/:被更清楚地看到是左側的Range對象的方法。