Scala 在实例化案例类实例时,如何混合使用两种特性?

Scala 在实例化案例类实例时,如何混合使用两种特性?,scala,Scala,下面是我的REPL会话: scala> case class Person(name:String) defined class Person scala> trait Hobby{val hobby:String} defined trait Hobby scala> trait ProgrammingLanguage{val language:String} defined trait ProgrammingLanguage scala> val alex =

下面是我的REPL会话:

scala> case class Person(name:String)
defined class Person

scala> trait Hobby{val hobby:String}
defined trait Hobby

scala> trait ProgrammingLanguage{val language:String}
defined trait ProgrammingLanguage

scala> val alex = new Person("Alex") with Hobby{val hobby:String = "fishing"}
alex: Person with Hobby = Person(Alex)


scala> val alex2 = new Person("Alex") with Hobby{val hobby:String = "fishing"} with ProgrammingLanguage{val language:String = "Scala"}
<console>:1: error: ';' expected but 'with' found.
       val alex = new Person("Alex") with Hobby{val hobby:String = "fishing"} with ProgrammingLanguage{val language:String = "Scala"}
scala>案例类人物(姓名:String)
限定类人
scala>trait Hobby{val Hobby:String}
明确的特征爱好
scala>trait编程语言{val语言:字符串}
定义特征编程语言
scala>val alex=爱好为{val Hobby:String=“钓鱼”}的新人(“alex”)
亚历克斯:有爱好的人=人(亚历克斯)
scala>val-alex2=有爱好{val-Hobby:String=“fishing”}有编程语言{val-language:String=“scala”}的新人(“Alex”)
:1:错误:';'应为,但找到“with”。
val alex=有爱好的新人(“alex”){val Hobby:String=“fishing”}有编程语言{val language:String=“Scala”}

我不太明白为什么我可以混合一种特性,但不能以这种方式混合两种特性。您能解释一下吗?

在您的示例中,您试图为
人的实例定义两个实体。这是不可能的。您需要在同一正文中定义
爱好
语言

val alex2 = new Person("Alex") with Hobby with ProgrammingLanguage {
  val hobby:String = "fishing"
  val language:String = "Scala"
}

谢谢我觉得我应该早就知道这一点,但最好以后再学。“这是不可能的。”事实上,这是,只是不像这样:。有趣的评论,谢谢。若我理解正确的话,早期的定义允许你们嵌入更多的字段,但你们不能在它们上进行模式匹配,对吗?