我使用Scala的版本:Scala code runner version 2.9.2-unknown-unknown -- Copyright 2002-2011, LAMP/EPFL
構造函數不能實例化爲預期類型; 2P @人
我試圖深的情況下匹配從這裏構造:http://ofps.oreilly.com/titles/9780596155957/RoundingOutTheEssentials.html和代碼如下match-deep.scala
:
class Role
case object Manager extends Role
case object Developer extends Role
case class Person(name:String, age: Int, role: Role)
val alice = new Person("Alice", 25, Developer)
val bob = new Person("Bob", 32, Manager)
val charlie = new Person("Charlie", 32, Developer)
for(person <- List(alice, bob, charlie)) {
person match {
case (id, p @ Person(_, _, Manager)) => println("%s is overpaid".format(p))
case (id, p @ Person(_, _, _)) => println("%s is underpaid".format(p))
}
}
我收到以下錯誤:
match-deep.scala:13: error: constructor cannot be instantiated to expected type;
found : (T1, T2)
required: this.Person
case (id, p @ Person(_, _, Manager)) => println("%s is overpaid".format(p))
^
match-deep.scala:13: error: not found: value p
case (id, p @ Person(_, _, Manager)) => println("%s is overpaid".format(p))
^
match-deep.scala:14: error: constructor cannot be instantiated to expected type;
found : (T1, T2)
required: this.Person
case (id, p @ Person(_, _, _)) => println("%s is underpaid".format(p))
^
match-deep.scala:14: error: not found: value p
case (id, p @ Person(_, _, _)) => println("%s is underpaid".format(p))
我在這裏做錯了什麼?
任何想法是將 'ID' 的case語句的目的是什麼?也許它與舊的Scala語法有關? – tuxdna 2013-02-25 07:47:27