Scala多嵌套大小写类
大家好,我在SCALA上创建了以下case类:Scala多嵌套大小写类,scala,case-class,Scala,Case Class,大家好,我在SCALA上创建了以下case类: sealed abstract class Value; case class U(name: String) extends Value case class L(name: String) extends Value case class B(name: String) extends Value sealed abstract class Term case class Var(name: String) extends
sealed abstract class Value;
case class U(name: String) extends Value
case class L(name: String) extends Value
case class B(name: String) extends Value
sealed abstract class Term
case class Var(name: String) extends Term //variable name
case class Val(value: Value) extends Term //value
sealed abstract class Pattern //patterns
case class BGP(subject: Term, predicate: Term, obj: Term) extends Pattern
case class And( pat1: Pattern, pat2: Pattern) extends Pattern
case class Filter(pred: Predicate, pattern: Pattern ) extends Pattern
def function(p: Pattern): Unit = p match {
case BGP(Var(x), Val(y), Val(z)) => {
val con:conv = new conv()
val valor:Value = Val(y).value
}
然后,如您所见,BGP包含Term并扩展到模式,Val包含值并扩展到Term,U、L、B包含字符串并扩展到值,
在我的函数中,我希望访问包含U或L或B case类的字符串,变量valor=Val(y)。例如,value包含一个U类,但当我写入valor.XXXX时,不会显示name选项。最大的问题是如何从U访问字符串名 您只需在
值
上定义它,顺便说一句,它可能是特征
sealed trait Value {
def name: String
}
case class U(name: String) extends Value
case class L(name: String) extends Value
case class B(name: String) extends Value
您只需在
值
上定义它,顺便说一句,它可能是特征
sealed trait Value {
def name: String
}
case class U(name: String) extends Value
case class L(name: String) extends Value
case class B(name: String) extends Value
此时的这些类位于trait:trait sparql解释器{sealed abstract class Value;case class URI(name:Node)扩展值case class Literal(name:Node)扩展值case class BlankNode(name:Node)延伸Value@VladimirRincon我看不出这有什么区别,你不能访问
值
类,你是这么说的吗?好的@flavian,我明白你的观点,我实现了,你是对的,它可以工作,谢谢你!!现在这个类有一个特点:trait sparql解释器{密封的抽象类值;案例类URI(名称:节点)扩展值案例类文字(名称:节点)扩展值案例类BlankNode(名称:节点)延伸Value@VladimirRincon我看不出这有什么区别,你不能访问值
类,这就是你说的吗?好的@flavian,我明白你的观点,我实现了,你是对的,它是有效的,谢谢!!你把你的U
,L
,B
类实例当作值
,这不正确“没有声明任何方法/字段,但你希望它在你想要的时候神奇地拥有它们吗?:Diges,我希望SCALA的神奇属性,XD,@flavian给了我正确的答案你将你的U
,L
,B
类实例视为值,它没有声明任何方法/字段,但你希望它是“你想要的时候就有魔法吗?:染料,我希望SCALA的魔法属性,XD,”弗拉维安给了我正确的答案