【问题标题】:Scala: keyword as package nameScala:关键字作为包名
【发布时间】:2010-11-15 23:47:00
【问题描述】:

我正在尝试使用定义一些 xxx.xxx.object 包的 Java 库(没有可用的源代码)。 Scala 抱怨包名称中存在“对象”,因此我无法从中导入,也无法使用完全限定名称引用它的类。

有办法解决吗?

【问题讨论】:

    标签: scala


    【解决方案1】:

    将对象包装在 `(1 旁边的引号)中应该可以工作。

    xxx.xxx.`object` 
    

    【讨论】:

    • 我在 2.8.1.final 中注意到这仍然不能在控制台中帮助您——可能是 REPL 代码中的错误。导入工作正常,但尝试使用您导入的符号之一,显然某些东西不会在后台转义。
    【解决方案2】:

    要完成agilefallanswerScala Language Specification 提到导入由id 组成:

    id ::= plainid
    | ‘\`’ stringLit ‘\`’
    

    标识符也可以由反引号之间的任意字符串组成(主机系统可能会对标识符合法的字符串施加一些限制)。然后标识符由除反引号本身之外的所有字符组成。

    当需要访问 Java 标识符时,反引号括起来的字符串是一种解决方案,Java 标识符是 Scala 中的保留字。
    例如,声明 Thread.yield() 是非法的,因为 yield 是 Scala 中的保留字。但是,这里有一个解决方法:

    Thread.`yield`()
    

    【讨论】:

    • 除了简单的“back=quote 封闭字符串”之外,还有更正式的名称吗? #Scala 上有人提到“反挠”,但我在 Google 中找不到。
    • @AntonyStubbs "Programming in Scala" 也提到了 "back ticks" (例如文字)
    猜你喜欢
    • 2011-08-19
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2015-02-03
    • 2016-10-24
    相关资源
    最近更新 更多