首页 文章

Scala标签类型

提问于
浏览
2

使用:Scala 2.10.3

尝试编译以下内容会出错 . 如果我删除案例类,那么它编译 .

关于双重解决方案的任何想法?

object DomainTypes {
type Tagged[T] = { type Tag = T }
trait DeviceIdTag
type DeviceId = Int with Tagged[DeviceIdTag]

implicit class TaggedInt(val data: Int) extends AnyVal {

 def deviceId = {
  require(data >= 1)
  data.asInstanceOf[DeviceId]
}
}
}

 case class DeviceIdHolder(odeviceId:DeviceId)

[错误]类型不匹配; [error] found:需要Double [error]:AnyRef [error]注意:scala.Double => java.lang.Double中存在隐式,但是从Object继承的[error]方法呈现不明确 . 这是为了避免[error]一个隐式的隐式,它会将任何scala.Double转换为任何AnyRef . [错误]您可能希望使用类型ascription:x:java.lang.Double . [错误]找到一个错误[错误](编译:编译)编译失败[错误]总时间:0秒,完成2014年3月2日上午11:47:01

如果用String替换INT,那么它就会编译,所以我认为本身没有任何结构上的错误 .

1 回答

相关问题