私はカレー機能に関するいくつかの質問があります。ここで私はそれらを1つずつ尋ねますスカラのカリング関数関連の質問
1)http://twitter.github.com/scala_school/basics.htmlは、カルト関数の例を示しています - 私は関数定義だと思っていましたが、実際はそうではありません。 REPLはこれを有効な文として認識しません。
multiplyThenFilter { m: Int => m * 2 } { n: Int => n < 5}
2)部分的にパラメータ化されたメソッドから関数を定義できないのはなぜですか?すなわち、以下の定義に何が問題なのですか?
scala> def multiply(m: Int, n: Int): Int = m * n
multiply: (m: Int, n: Int)Int
scala> val timesTwo = multiply(2,_)
<console>:11: error: missing parameter type for expanded function ((x$1) => multiply(2, x$1))
val timesTwo = multiply(2,_)
^
3)なぜ部分的にパラメータ化された関数をカルト化できないのですか?すなわち、以下の定義に何が問題なのですか?
scala> (multiply(_,_)).curried
res13: Int => (Int => Int) = <function1> // THIS IS OK
scala> (multiply(20,_)).curried
<console>:12: error: missing parameter type for expanded function ((x$1) => multiply(20, x$1))
(multiply(20,_)).curried
^
1)これは無効です。最初に宣言する必要があるためです。たとえば、次のようにします。 'def multiplyThenFilter(a:Int => Int)(b:Int => Boolean)= {List(1,2,3,4).map(a)。filter(b)} ' –
1)multiplyThenFilterは今やなくなっています。あなたはそれによって混乱した唯一の人物ではありません:-) –