我使用以下代码来满足我的需求:
(1 to 5)..map(i => s"\\x${i}") // Produces List("\\x1", "\\x2", "\\x3", "\\x4", "\\x5")
但我想使用占位符。根据字符串插值器文档 http://docs.scala-lang.org/overviews/core/string-interpolation.html :
(1 to 5).map(s"\\x${_}")
应扩展到:
(1 to 5).map(StringContext("\\\\x","").s(_))
但后者有效,而前者无效,这会引发error: unbound placeholder parameter
on _
. Why?
我相信语法:
(1 to 5).map(s"\\x${_}")
编译器认为 _ 属于s
函数在这种情况下将不起作用。您可以通过执行以下操作轻松解决此问题:
(1 to 5).map(i => s"\\x${i}")
你可能想看看这个link https://stackoverflow.com/questions/1025181/hidden-features-of-scala/1083523#1083523进一步明确与匿名函数相关的占位符规则。
编辑:
根据这篇文章,占位符语法曾经有效,所以这可能是一个回归错误或一个从来不打算以这种方式工作的功能:https://groups.google.com/forum/#!msg/scala-internals/G_54LGj0zpg/REZfyXZ6-RwJ https://groups.google.com/forum/#!msg/scala-internals/G_54LGj0zpg/REZfyXZ6-RwJ
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)