2016-07-07 6 views
0

私は全く新しいScalaという新しい世界で、理解しているのはほとんどありませんScalaという概念です。 hereから私はScala Codeの部分の下になりました。スカラ - コントロール構造

def twice(op: Double => Double, x: Double) = op(op(x)) 

と結果Double = 7.0を返すtwice(_ + 1, 5)を呼び出すこともできます。しかし、私は_ + 1op: Double => Doubleが本当に意味するものを理解できませんでした。誰かが上記のコードを私に説明することができますか?

答えて

3
op: Double => Double 

opDoubleの値を取り、型Doubleの新しい値を返す関数です。

_ + 1 

_(。つまり、この関数は説明したが名前がないている。それは、それは名前opを持ってtwice方法で受信されると)、この無名関数の引数のプレースホルダであるので、この関数は引数を取りますそれに1を加え、新しい値を返します。

あなたはこのようにそれについて考えることができますtwice(_ + 1, 5)呼び出す場合:op(op(x)) - >op(op(5)) - >op(5 + 1) - >op(6) - >6 + 1 - >7(または7.0それがタイプDoubleであるため)

+0

どのように 'op(5 + 1)'は、私の理解としては、 'op(_ + 1)'にすべきでしょうか? –

+1

'op'は' _ + 1'なので 'op(x)'は 'x + 1'になります。同様に 'op(5)'は '5 + 1'になります。 – jwvh

+0

ありがとうございました:) –

関連する問題