看板 [ PLT ]
討論串[問題] Scala 的 Covariant/Contravariant/Inv …
共 17 篇文章

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者godfat (godfat 真常)時間16年前 (2009/03/18 23:46), 編輯資訊
0
0
0
內容預覽:
稍微試了一下,如果是內建型別的話,似乎是有簡單的方式。. 像是 Array 就是 invariant, 但是可以透過 readOnly 轉成接受 covariant 者:. val int_list: Array[Integer] = Array(1,2,3). val any_list: Rand
(還有542個字)

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者sbrhsieh (sbr)時間16年前 (2009/03/18 19:24), 編輯資訊
0
0
1
內容預覽:
謝謝你的解說。我只是覺得有時候 Value 就不是我寫的,雖然他當初被設計成. mutable object,但是當我沒有要變更它的狀態時,我沒有辦法以我想要的方式. 去使用,這讓我比較不能接受。. 關於 functional programming,我自己私下有摸 Scheme 與 Erlang,

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者godfat (godfat 真常)時間16年前 (2009/03/18 18:43), 編輯資訊
0
0
3
內容預覽:
我沒有想到,看來果然是不熟 java generic XD. 這樣說來的話,java generic 確實是 scala generic 的 superset, 對嗎?. 就我目前所知,應該是做不到的。試了一下,這樣的動作,. 感覺像是一種 view, 也就是說把 java.util.List 本身
(還有830個字)

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者macbuntu (邀怪)時間16年前 (2009/03/18 18:38), 編輯資訊
0
0
0
內容預覽:
你寫不出來是對的, 這就是 Scala 型別比 Java 嚴謹的關係.. 你的 Value[T] 介面的設計, T 只能是 invariant, 所以將來使用 Value[T]. 的地方, 也不可以隨便宣告成 covariant. 這就是所謂 vairant 由設計者來決定.. 而 Java 就不管
(還有13個字)

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者sbrhsieh (sbr)時間16年前 (2009/03/18 18:25), 編輯資訊
0
0
0
內容預覽:
你的意思是不是即使是這樣子,在 scala 設計中也應該是 compiler error(由. compiler 告訴 programmer invariant type 不能 covariant use)?. // compile time error, invariant type T cann
(還有641個字)