这个成语(?)在楼梯书中出现了很多次:
val b:A = new B
或者
val b = new B
val b2:A = b
除了试图在教科书中提出一些观点之外,为什么要声明与推断类型不同的类型?
顺便问一下,这个有什么名字吗?
这个成语(?)在楼梯书中出现了很多次:
val b:A = new B
或者
val b = new B
val b2:A = b
除了试图在教科书中提出一些观点之外,为什么要声明与推断类型不同的类型?
顺便问一下,这个有什么名字吗?
它可用于:
对于更复杂的实例化,它确保推断的类型是正确的。例如
sealed trait Answer
case object Yes extends Answer
case object No extends Answer
scala> val a = List( Yes, Yes, No )
a: List[Product with Serializable with Answer] = List(Yes, Yes, No)
scala> val b: List[Answer] = List( Yes, Yes, No )
b: List[Answer] = List(Yes, Yes, No)
我认为它类似于针对接口编程的习惯用法。通过做
val b:A = new B
你确保在那之后你不依赖任何其他的东西,而不是A
. 即,它保证如果你决定改变b:A = new C
什么都不会破坏。