访问foreach Generics Scala中的类字段

时间:2018-01-13 21:05:33

标签: scala generics

我创建了这段代码

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(_))
}

由于

1 个答案:

答案 0 :(得分:1)

将其设为val name: String。在普通类(即非案例类)中,没有val的字段会生成private修饰符。 Case类作为整体语法糖的一部分,所以另一种可能性是使你的类case

此外,在传递值时,您不必指定类型(name: String),通常Scala会推断出来。