5

ニーズを満たすために次のコードを使用しています。

 (1 to 5)..map(i => s"\\x${i}")  // Produces List("\\x1", "\\x2", "\\x3", "\\x4", "\\x5")

しかし、プレースホルダーを使用したいと思います。文字列インターポレータのドキュメントによると:

(1 to 5).map(s"\\x${_}")

次のように展開する必要があります。

(1 to 5).map(StringContext("\\\\x","").s(_))

しかし、後者は機能しますが、 error: unbound placeholder parameteronをスローする前者は機能しません_。なんで?

4

1 に答える 1

11

私は構文で信じています:

(1 to 5).map(s"\\x${_}")

コンパイラは、 _ が関数に属していると認識し、sその場合は機能しません。これは、次のようにすることで簡単に解決できます。

(1 to 5).map(i => s"\\x${i}")

匿名関数に関連するプレースホルダーのルールをさらに明確にするために、このリンクをご覧になることをお勧めします。

編集: この投稿によると、プレースホルダー構文は以前は機能していたため、おそらくこれは回帰エラーであるか、このように機能することを意図していなかった機能です: https://groups.google.com/forum/#!msg/scala -internals/G_54LGj0zpg/REZfyXZ6-RwJ

于 2013-05-22T09:55:33.730 に答える