Scala 错误:对withName的引用不明确
我在一个包中有两个枚举 一个是状态Scala 错误:对withName的引用不明确,scala,enums,Scala,Enums,我在一个包中有两个枚举 一个是状态 object Status extends Enumeration{ type Status = Value val ACTIVE , INACTIVE = Value } object Type extends Enumeration { type Type = Value val PAINTING , SCULPTURE , MANUSCRIPT= Value } 另一种是类型 object Status extends Enumera
object Status extends Enumeration{
type Status = Value
val ACTIVE , INACTIVE = Value
}
object Type extends Enumeration {
type Type = Value
val PAINTING , SCULPTURE , MANUSCRIPT= Value
}
另一种是类型
object Status extends Enumeration{
type Status = Value
val ACTIVE , INACTIVE = Value
}
object Type extends Enumeration {
type Type = Value
val PAINTING , SCULPTURE , MANUSCRIPT= Value
}
我在艺术课上为他们两个都安排了二传
class Art {
//some code
def setStatus(setStatus: Status) = {
status = setStatus
}
def settype(settype:Type) = {
type = settype
}
}
现在,我正试图使用类似这样的withName()函数从另一个类设置这些枚举
class B {
// some code
val art = new Art
art.settype(withName("PAINTING"))
art.setStatus(withName("ACTIVE"))
}
它给了我这个错误
对withName的引用不明确;它在同一时间被导入两次
按导入模型.ArtModels.Type.和
导入models.ArtModels.Status_
请指导我如何解决此问题。您可以指定需要这样的解决方案
class B {
// some code
val art = new Art
art.settype(Type.withName("PAINTING"))
art.setStatus(Status.withName("ACTIVE"))
}
object Test extends App{
// some code
val art = new Art
art.settype(Models.Type.withName("PAINTING"))
art.setStatus(Models.Status.withName("ACTIVE"))
}
编辑:
如果在另一个对象中定义枚举,可以这样指定它
class B {
// some code
val art = new Art
art.settype(Type.withName("PAINTING"))
art.setStatus(Status.withName("ACTIVE"))
}
object Test extends App{
// some code
val art = new Art
art.settype(Models.Type.withName("PAINTING"))
art.setStatus(Models.Status.withName("ACTIVE"))
}
方法“withName”是“scala.Enumeration”类的函数。必须从对象实例显式调用它
class B {
// some code
val art = new Art
art.setType(Type.withName("PAINTING"))
art.setStatus(Status.withName("ACTIVE"))
}
请注意,
type
在Scala中是一个保留字,不能用作变量名,除非您使用back tick。我在这里实际简化了它。我没有使用“type”,我也尝试过这样做,但它给出了“未找到:值类型”和“未找到:值状态”关于类型和状态虽然我有正确的导入你是这样导入的吗<代码>导入状态。您是否在其他对象中定义了枚举?如果是这样,请像这样导入导入Models.Status.\u
如果您所说的其他对象是指在其他包中,而不是在yes中,那么我在不同的包中有enum和调用类,并且我已经导入了您提到的enum,但它对我不起作用