hal*_*arp 1 scala scala-2.8 scala-2.9
我有以下场景:
sealed abstract class Type(val inUse: Boolean)
case class IntTy(override val inUse: Boolean) extends Type(inUse)
case class TupleTy(override val inUse: Boolean, elems: Type*) extends Type(inUse) {
def this(elems: Type*) = this(false, elems:_*)
}
Run Code Online (Sandbox Code Playgroud)
在Scala 2.8.0中这很好用,我可以创建一个新的TupleTy实例:
TupleTy(IntTy(false))
Run Code Online (Sandbox Code Playgroud)
但是,我刚刚更新到Scala 2.9.1 final,它不再有效.我现在收到以下错误:
error: type mismatch;
found : IntTy
required: Boolean
TupleTy(IntTy(false))
^
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我错过了某些东西?
我不确定它是否适用于2.8.0.
您已定义了其他构造函数,但未定义其他工厂方法.
new TupleTy(IntTy(false)) // works as expected
Run Code Online (Sandbox Code Playgroud)
编辑
这是一个可能的解决方法
case class TupleTy(override val inUse: Boolean = false)(elems: Type*) extends Type(inUse)
Run Code Online (Sandbox Code Playgroud)
现在你可以做这样丑陋的事情,但你不应该这样做.不,不,你不应该.
TupleTy()(IntTy(false))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |