我正在阅读斯卡拉之旅:抽象类型.什么时候使用抽象类型更好?
例如,
abstract class Buffer {
type T
val element: T
}
Run Code Online (Sandbox Code Playgroud)
而是那些泛型,例如,
abstract class Buffer[T] {
val element: T
}
Run Code Online (Sandbox Code Playgroud) 有没有什么办法,去的类型A从Some[A]?
type X = Some[Int]
type Y = ??? // what do I have to write here to get `Int`
Run Code Online (Sandbox Code Playgroud)
我可以定义自己的Option类型,允许这样:
sealed trait Option[+A]
case object None extends Option[Nothing]
case class Some[+A](a: A) {
type Inner = A
}
Run Code Online (Sandbox Code Playgroud)
然后使用
type X = Some[Int]
type Y = X#Inner
Run Code Online (Sandbox Code Playgroud)
对于普通的Scala Option类型,这也可以吗?