Pet*_*lák 7 polymorphism scala nothing any
例如,Exception.allCatch定义为
def allCatch[T]: Catch[T] 
为什么不呢
val allCatch: Catch[Nothing]
什么时候Catch它的论证是协变的?
或者,为什么PartialFunction对象定义
def empty[A, B]: PartialFunction[A, B] 
而不仅仅是
val empty: PartialFunction[Any,Nothing]
?
更新:到目前为止似乎答案错过了重点.因此,请在答案中包含一个真正针对问题的具体示例.例如:显示一段可以使用def empty[A, B]: PartialFunction[A, B]但不起作用(或不太方便)的代码val empty: PartialFunction[Any,Nothing].
小智 2
这节省了稍后进行转换的需要,并允许将 args 类型视为 T 而不是 Any,这通常更方便。
这是一个例子:
scala> def func1[T](arg : T) : T = { arg }
func1: [T](arg : T)T
scala> def func2(arg : Any) : Any = { arg }
func2: (arg: Any)Any
scala> func1(4)
res4: Int = 4
scala> func2(4)
res7: Any = 4
| 归档时间: | 
 | 
| 查看次数: | 430 次 | 
| 最近记录: |