Scala未绑定的占位符参数

时间:2013-05-22 09:34:57

标签: scala scala-2.10 string-interpolation

我使用以下代码来满足我的需求:

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

但我想使用占位符。根据{{​​3}}:

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

应扩展为:

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

但是后者在error: unbound placeholder parameter上投放_,而不是前者。为什么呢?

1 个答案:

答案 0 :(得分:10)

我相信语法:

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

编译器认为_属于s函数,在这种情况下它不起作用。您可以通过执行以下操作轻松解决此问题:

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

您可能希望查看此link,以进一步明确与匿名函数相关的占位符规则。

编辑: 根据这篇文章,占位符语法用于工作,所以这可能是回归错误或从未意图以这种方式工作的功能:https://groups.google.com/forum/#!msg/scala-internals/G_54LGj0zpg/REZfyXZ6-RwJ

相关问题