如何和爲什麼「VAL」和「案例」影響類型系統? (尤其是方差)逆變和Val
Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.
scala> class E[-A]
defined class E
scala> class F[-A](val f: E[A] => Unit)
<console>:6: error: contravariant type A occurs in covariant position in type => (E[A]) => Unit of value f
class F[-A](val f: E[A] => Unit)
^
scala> case class C[-A](f: E[A] => Unit)
<console>:6: error: contravariant type A occurs in covariant position in type => (E[A]) => Unit of value f
case class C[-A](f: E[A] => Unit)
scala> class F[-A](f: E[A] => Unit)
defined class F
所以這意味着我的例子中的決定因素是'val'和'case'爲構造函數參數生成公共成員? – ladrl 2011-02-24 07:46:14
從打字的角度來看,你可以認爲你的代碼是「E類[-A] {def f:A = ...},這使得A處於協變位置。」 – 2011-02-24 17:25:56
@ladrl這是正確的。 – 2011-02-24 17:58:55