微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scala未绑定的占位符参数

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

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

但我想使用占位符.根据the string interpolator documentation

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

应该扩展到:

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

但后者工作,而不是前者,它会抛出错误:_上的未绑定占位符参数.为什么?

解决方法

我相信语法:

(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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐