Scala中的文字允许定义此答案所描述的标识符。有没有办法在字面量中转义反引号`?做类似的事情:
 val `hello `world` = "hello world"
更新:
为此,其中一种用例是将精炼库用于与包含反引号的正则表达式匹配的某些精炼类型,例如:
  import eu.timepit.refined._
  import eu.timepit.refined.api.Refined
  type MatchesRegexWithBacktick = String Refined MatchesRegex[W.`(a|`)`.T]
它不能与Scala编译器来完成的,是的,但也许这将是可能的,改变标识符进行语法分析(也许如果背蜱的功能在某种程度上与一些不起眼的Unicode字符替换)方式的编译器插件。
在Scala SLS 1.1中,存在标识符的词汇语法:
op       ::=  opchar {opchar}
varid    ::=  lower idrest
boundvarid ::=  varid
             | ‘`’ varid ‘`’
plainid  ::=  upper idrest
           |  varid
           |  op
id       ::=  plainid
           |  ‘`’ { charNoBackQuoteOrNewline | UnicodeEscape | charEscapeSeq } ‘`’
idrest   ::=  {letter | digit} [‘_’ op]
问题是,唯一允许除字母,数字之外的任何字符的规则,或者_是要求标识符带有反引号的规则:
‘`’ { charNoBackQuoteOrNewline | UnicodeEscape | charEscapeSeq } ‘`’
但是,它明确不允许使用来回引号charNoBackQuoteOrNewline,并且如果您认为可以使用解决该问题UnicodeEscape,那么也将不起作用:
scala> val `hello \u0060world` = "hello world"
<console>:1: error: unclosed quoted identifier
val `hello \u0060world` = "hello world"
                      ^