据我所知,object
只是单例实例。我想创建包含单元格类型的枚举类型,然后使用包含坐标和枚举类型的构造函数创建class Cell
。但是,它无法完成,我无法找到原因。
object CellType extends Enumeration {
val Empty, X, O = Value
}
在另一个档案中:
class Cell(column: Int, row: Int, cellType : CellType) {
} // CellType is an object, and it doesn't work!
您是否有任何想法如何做,或者至少为什么Scala禁止在构造函数中使用对象?
错误讯息:
警告:(3,37)导入' CellType'是永久隐藏的 包模型导入中对象CellType的定义 de.htwg.model.CellType
答案 0 :(得分:3)
var connectionString = "Data Source=ServerName; Initial Catalog=DataBaseName; User id=UserName; Password=Secret;";
不是一个类型,它是一个对象。它实际上是其类型的唯一对象CellType
。如果要使用只能是此对象的函数参数,可以使用类型为CellType.type
的参数。但是,如果它只能是CellType.type
,为什么还要把它作为一个论据呢?也可以直接使用对象,而不是将其作为参数传递。
您可能想要的不是CellType
的类型,而是其枚举值的类型,恰好是CellType
。
注意:我个人觉得scala语言在同一级CellType.Value
和trait
es(类型)和class
s上定义相当令人不安,它们是单身人士。你不应该被这个明显的比喻误导,并且真正将对象视为值,将类和特征视为类型。