我创建了这段代码
trait Animal {}
class Chien extends Animal {}
class Chat(name:String) extends Animal {
def this()=this("Chat sans nom")
}
class Siamois(name:String) extends Chat(name:String) {
def this()=this("Siamois sans nom")
}
class BébéSiamois(name:String) extends Siamois(name:String) {
def this()=this("Bébé Siamois sans nom")
}
val chat1:Chat=new Chat("Darius") // ne passera pas
val chat2:Siamois=new Siamois("Iroise")
val chat3:BébéSiamois=new BébéSiamois("Jazz")
val chat4:Siamois=new BébéSiamois("Enzo")
val chat5: BébéSiamois=new BébéSiamois("Elios")
val listeFelins=List(chat2,chat3,chat4,chat5)
这是我的问题,如何在foreach中访问Chat,Siamois和BébéSiamois中常见的字段名称?
def createAListeOfSiamoisAndChild[T<:Siamois](xs:List[T]):Unit={
xs.foreach(println(_))
}
由于
答案 0 :(得分:1)
将其设为val name: String
。在普通类(即非案例类)中,没有val
的字段会生成private
修饰符。 Case类作为整体语法糖的一部分,所以另一种可能性是使你的类case
。
此外,在传递值时,您不必指定类型(name: String
),通常Scala会推断出来。