Ash*_*ary 5 types scala type-inference
这个成语(?)在楼梯书中出现了很多次:
val b:A = new B
Run Code Online (Sandbox Code Playgroud)
要么
val b = new B
val b2:A = b
Run Code Online (Sandbox Code Playgroud)
除了试图在教科书中提出一些观点之外,你为什么要声明一种与推断类型不同的类型?
顺便说一句,这个名字是什么?
par*_*tic 14
它可用于:
对于更复杂的实例化,它确保推断类型是正确的.例如
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)
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 10
我认为它类似于对接口编程的习惯用语.通过做
val b:A = new B
Run Code Online (Sandbox Code Playgroud)
你确保在那之后你不依赖于提供的界面以外的任何东西A.即,它保证如果你决定改变b:A = new C什么都不会破坏.
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |