我得到recursive value foo needs type
以下代碼:「遞歸價值需求型」與案例類不應用
object Repro {
private final case class Foo(bar: Boolean = false)
def repro = {
val foo = Foo(bar = true)
val Foo(bar) = foo
}
}
然而,重命名未覈銷場編譯就好了。
object Repro {
private final case class Foo(bar: Boolean = false)
def repro = {
val foo = Foo(bar = true)
val Foo(bar1) = foo // <- Here
}
}
我不知道是什麼導致了這一點 - 在不應用使用bar
不可能引用Foo
的字段的名稱...
當我編譯你的程序時,有一個警告'警告:未能確定'bar = ...'是一個命名參數還是一個賦值表達式。 上述錯誤消息中提到的定義需要顯式類型。當你定義你的'Foo' case類時,你已經給'bar'一個默認值,所以如果你用'val foo = Foo(true)'來改變'val foo = Foo(bar = true)',那裏在編譯時沒有錯誤。哦,也許這是一個功能(請參閱https://github.com/sbt/sbt/issues/1928)。 – alifirat
謝謝,這很有幫助。但是,爲什麼會導致OP中提到的問題呢? –