这有效
(x => s"$x")
但是这个
(s"${_}")
给出
[error] ...: unbound placeholder parameter
[error] (s"${_}")
这只是因为s"..."
构造遭受Leaky Abstraction?
此外: (s"$_")
以完全不同的输出失败:
[error] ...: invalid string interpolation: `$$', `$'ident or `$'BlockExpr expected
[error] (s"$_")
[error] ^
[error] ...: unclosed string literal
[error] (s"$_")
答案 0 :(得分:5)
在我看来,调用字符串插值漏洞是完全正确的。虽然它在大多数情况下都能正常工作,但是有许多边缘情况,它不会像人们期望的那样工作。这是另一个这种边缘情况的化身。
我不知道为什么编译器不接受s"$_"
。前段时间有一个pull请求为模式匹配引入了这种语法:PR 2823
有趣的是,此PR还包含测试underscore outside of a pattern match produces an error。
的测试用例不幸的是,没有进一步的描述为什么这是按照它的实现方式实现的。
Som Snytt,实施PR的人在SO上活跃,希望他能说出更多信息。