看板
[ PLT ]
討論串[問題] Scala 的 Covariant/Contravariant/Inv …
共 17 篇文章
內容預覽:
稍微試了一下,如果是內建型別的話,似乎是有簡單的方式。. 像是 Array 就是 invariant, 但是可以透過 readOnly 轉成接受 covariant 者:. val int_list: Array[Integer] = Array(1,2,3). val any_list: Rand
(還有542個字)
內容預覽:
我沒有想到,看來果然是不熟 java generic XD. 這樣說來的話,java generic 確實是 scala generic 的 superset, 對嗎?. 就我目前所知,應該是做不到的。試了一下,這樣的動作,. 感覺像是一種 view, 也就是說把 java.util.List 本身
(還有830個字)
內容預覽:
你寫不出來是對的, 這就是 Scala 型別比 Java 嚴謹的關係.. 你的 Value[T] 介面的設計, T 只能是 invariant, 所以將來使用 Value[T]. 的地方, 也不可以隨便宣告成 covariant. 這就是所謂 vairant 由設計者來決定.. 而 Java 就不管
(還有13個字)
內容預覽:
你的意思是不是即使是這樣子,在 scala 設計中也應該是 compiler error(由. compiler 告訴 programmer invariant type 不能 covariant use)?. // compile time error, invariant type T cann
(還有641個字)