【问题标题】:Why do I get "expected class or object definition" when defining a type in scala?为什么在scala中定义类型时会得到“预期的类或对象定义”?
【发布时间】:2015-03-13 17:01:02
【问题描述】:

如果我写这样的东西(按照docs 定义 Slick 表):

type UserIdentity = (String, String)
class UserIdentity(tag: Tag){
...
}

我收到一个编译错误:“预期的类或对象定义”指向 type 声明。为什么?

【问题讨论】:

    标签: scala slick


    【解决方案1】:

    您不能在类、特征或对象定义之外定义类型别名。

    如果你想要一个在包级别可用的类型别名(所以你不必显式导入它),最简单的方法是定义一个package object,它与包同名并允许你在其中定义任何内容,包括类型别名。

    因此,如果您有一个 foo.barpackage 并且希望添加类型别名,请执行以下操作:

    package foo
    
    package object bar {
      type UserIdentity = (String, String)
    }
    
    //in another file
    package foo.bar
    val x: UserIdentity = ...
    

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多