2011-02-03 19 views
3

私はそれが何を意味するのか知っています:リストをとり、その中の各要素に1を加えます。つまり、map (1 + _)に相当します。私が理解していないのは、Scala を知っていることです。何が起きてる?これはどういう意味ですか:map(1 +)

編集

ダニエルはそれがより一般的な質問だと指摘します。たとえば、

def g(f : Int => Int, x : Int) = f(f(x)) 
g((1 +), 2) 
res12: Int = 4 

これはすばらしいです。毎日私はScalaができる新しい有用なものを見つけました。私は、この特定の物の完全な説明(そして理想的には名前)を探しているものと思われます。

+1

http://www.scala-lang.org/node/135 –

+0

ありがとうございますが、最後のリストを省略した場合、いくつかのパラメータリストを持つ関数がカリングされた関数になることは簡単に分かりますが、そうではありません本当にここのケース。 – Malvolio

+1

言語仕様では、適用されていないメソッドの暗黙的な変換である "η拡張"が呼び出されます。 http://www.scala-lang.org/docu/files/ScalaReference.pdfセクション6.26.2を参照してください。 –

答えて

8

それは少しこのように書きます:

  1. mapは、(この場合)機能Int => Bを期待しています。
  2. 1 +は、Int => Bという機能には解決されませんので、他のことを試してください。
  3. 1 +は、Intのパラメータが関数Int => Intになると予想されるメソッドから解除することができます。

Presto。

1つは1 + _を使用してあいまいさを解決します。

関連する問題