Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala中的mixin错误_Scala - Fatal编程技术网

Scala中的mixin错误

Scala中的mixin错误,scala,Scala,我正在学习Scala,我有以下三个文件: abstract class Animal() { name sound } class Dog(n : String) extends Animal { name = n val sound = "Boof" } trait Speaking extends Animal { def speak(n : String, s : Sound) : String = { println(

我正在学习Scala,我有以下三个文件:

  abstract class Animal() {
    name
    sound
}



 class Dog(n : String) extends Animal {
    name = n
    val sound = "Boof"
}

trait Speaking extends Animal {
    def speak(n : String, s : Sound) : String = {
        println(s + "! I'm " + n + "!")
    }
}
在我的主要方法中,我有以下代码:

d = new Dog("Maddie") with Speaking
println(d.speak)

当我运行此代码时,我得到错误:未找到:值d

val
放在
d
之前,如果您以前没有声明它。

我认为应该是这样的:

abstract class Animal() {
  def name: String // You need a type(String) and a qualifier(def)
  def sound: String // the same
}

class Dog(n : String) extends Animal {
  // Type is not obligatory here, as it is inherited from Animal. 
  // But you still need a qualifier(val)
  val name = n 
  val sound = "Boof"
}

trait Speaking extends Animal {
  // This method doesn't need those params,
  // since this trait extends Animal, 
  // so it has access to name and sound defined there.
  def speak: String = {
    sound + "! I'm " + name + "!"
  }
}
您的主要方法保持不变