我使用以下代码来满足我的需求:
(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
上投放_
,而不是前者。为什么呢?
答案 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