Scala in Depth提供以下方差示例。函數[Any,String]特徵和方差
scala> trait Function[-Arg, +Return] {
| def apply(arg: Arg): Return
| }
defined trait Function
scala> val foo = new Function[Any, String] {
| override def apply(arg: Any): String =
| "Hello. I received " + arg
| }
foo: Function[Any,String] = [email protected]
scala> val bar: Function[String, Any] = foo
bar: Function[String,Any] = [email protected]
那是什麼,我們可以分配給foo
的bar
原因?我有一個粗略的想法,但我想我會問完全。
爲什麼downvotes? –
是的,爲什麼downvotes?的[現實世界共和逆變Scala中的示例] –
可能重複(http://stackoverflow.com/questions/5277526/real-world-examples-of-co-and-contravariance-in-scala) –