字符串插值的符号名称

5
令我惊讶的是,这并不起作用 -
implicit class LambdaContext(val sc: StringContext) extends AnyVal {
  def λ(args: Any*) = args
}

scala> λ"λx.x"
<console>:1: error: ';' expected but string literal found.
λ"λx.x"

虽然这是一个有效的方法名:

scala> new LambdaContext(new StringContext("λx.x")).λ()
res1: Seq[Any] = List()

不确定是一个漏洞还是简单的限制。

1个回答

0

我不确定,但当你在 λ"λx.x" 中使用 λ 时,它似乎被视为一个 运算符,而只有 ASCII 可打印字符 才允许用于运算符。因此,如果你将 λ 替换为像 llambda 这样不那么花哨的东西,它就可以工作了。

implicit class LambdaContext(val sc: StringContext) extends AnyVal {
  def l(args: Any*) = λ(args)
  def λ(args: Any*) = args
}

scala> l"lx.x"
res1: Seq[Any] = List()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接