Scala unbound placeholder parameter

我与影子孤独终老i 提交于 2020-01-13 10:27:09

问题


I am using the following code to meet my needs:

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

But I would like to use a placeholder. According to the string interpolator documentation :

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

should expand to:

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

But the latter works, not the former, which throws an error: unbound placeholder parameter on _. Why?


回答1:


I believe with the syntax:

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

The compiler believes that the _ belongs to the s function in which case it won't work. You can easily solve this by doing something like this:

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

You might want to have a look at this link for further clarity on the rules for placeholders in relation to anonymous functions.

EDIT: According to this post, the placeholder syntax used to work, so maybe this is a regression error or a feature that was never meant to work this way: https://groups.google.com/forum/#!msg/scala-internals/G_54LGj0zpg/REZfyXZ6-RwJ



来源:https://stackoverflow.com/questions/16688365/scala-unbound-placeholder-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!