代码之家  ›  专栏  ›  技术社区  ›  BAE

在scala导入中,引号是什么意思?

  •  4
  • BAE  · 技术社区  · 6 年前

    我在scala程序中读取了一条import语句:

    import org.javaswift.joss.command.impl.`object`._
    

    做什么?

    ` `

    意思是?谢谢

    1 回复  |  直到 6 年前
        1
  •  6
  •   Yuval Itzchakov    6 年前

    backticks是定义标识符的一种特殊形式。这在scala规范中有说明, Section § 1.1 (Identifiers) :

    最后,标识符也可以由任意字符串构成。 在后引号之间 (主机系统可能会对 哪些字符串对于标识符是合法的)。那么标识符就是 由除后引号之外的所有字符组成。

    当需要使用保留关键字作为标识符时,将使用此选项。在这种情况下, object 是在scala中创建singleton类型的保留关键字:

    以下名称是保留字,而不是 词汇标识符的语法类ID:

    abstract    case        catch       class       def
    do          else        extends     false       final
    finally     for         forSome     if          implicit
    import      lazy        macro       match       new
    null        object      override    package     private
    protected   return      sealed      super       this
    throw       trait       try         true        type
    val         var         while       with        yield
    _    :    =    =>    <-    <:    <%     >:    #    @
    

    因为 对象 在保留关键字中指定,我们使用反勾号来绕过这个问题,并允许编译器为导入赋予正确的含义。