令我惊讶的是,这不起作用 -
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()
不确定这是一个错误还是简单的限制。
答案 0 :(得分:0)
我不确定,但是当您在λ
中使用λ"λx.x"
时,它似乎被视为运算符,而对于运算符仅 ASCII可打印字符被允许。因此,如果您将λ
替换为l
或lambda
等不那么花哨的内容,则可行。
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()