なぜ(10/5(1))は、例えば、私は、このコードfoldLeft演算子はScalaでどのように実装されていますか?
期待、foldLeft構文オペレータの作業を行い
(_ + _)
私にエラー「値を与えるために、 /:はIntのメンバーではありません "。どのようにメソッド/を展開するのですか?:型システムのすべての型?
なぜ(10/5(1))は、例えば、私は、このコードfoldLeft演算子はScalaでどのように実装されていますか?
期待、foldLeft構文オペレータの作業を行い
(_ + _)
私にエラー「値を与えるために、 /:はIntのメンバーではありません "。どのようにメソッド/を展開するのですか?:型システムのすべての型?
は「ショートカット」演算子の定義です:オペレータはコロンで終わる場合
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)(_ + _)
あなたの質問は完全には明確ではありません(あなたの式にはn
はありません)。ただし、コロンで終わる演算子は、左側ではなく右側の引数のメソッドとして解釈されます。あなたの表現は/:
で
(1 to 5)./:(10)(_ + _)
に相当し、より明確に左のRange
オブジェクトのメソッドであることを見られています。ここで
::メソッドではありません適用し、適用しないメソッドを持つオブジェクト –
本当ですか? http://www.scala-lang.org/api/current/index.html#[email protected]::(x:A):List[A] –
我々は両方とも正しいです、ここには'::' case class(=>(un)apply):http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.$colon$colon –