0
當我使用Scala的2.10.3和我有以下的測試代碼(test.scala)不工作:編譯錯誤定義的Scala功能
case class Person (name: Name, age: Age)
sealed class Name (val value: String)
sealed class Age (val value: Int)
def foo (n: Name, a: Age): Person = new Person (n, a)
case class PersonBasic (name: String, age: Int)
def fooBasic (n: String, a: Int): PersonBasic = new PersonBasic (n, a)
當我運行scalac,我得到:
scala> :load test.scala
Loading test.scala...
defined class Person
defined class Name
defined class Age
<console>:31: error: type mismatch;
found : Name(in object $iw)(in object $iw)(in object $iw)(in object $iw)
required: Name(in object $iw)(in object $iw)(in object $iw)(in object $iw)
def foo (n: Name, a: Age): Person = new Person (n, a)
^
<console>:31: error: type mismatch;
found : Age(in object $iw)(in object $iw)(in object $iw)(in object $iw)
required: Age(in object $iw)(in object $iw)(in object $iw)(in object $iw)
def foo (n: Name, a: Age): Person = new Person (n, a)
^
defined class PersonBasic
fooBasic: (n: String, a: Int)PersonBasic
問題:爲什麼fooBasic編譯時沒有問題,但是foo沒有?
我搜索了這個問題的答案 - 看到關於元組的東西,試過了,但它對我也不起作用。
thx om-nom-nom。移動名稱和年齡定義上面Person的def解決了我的問題。事實上,它解決了我更大的問題,出現相同的症狀。 Thx的提示以及! – sak