プログラミング言語 Scala
at TECH
593:デフォルトの名無しさん
08/12/12 08:35:32
>>569 です。582 さん、詳細に答えて下さり感謝します。
「Java の generics では、下のように extends を使う。デフォルトでは Object を継承
する」との説明を読んで、これは制限が強すぎると感じました。List, Vector, Map など
の素直なコレクション・ライブラリを記述するには型チェックが有効に働くでしょう。で
も使いもしないメソッドにまで型チェックが利いてしまうのでは、generic なライブラリ
を作るほうが大変だろうと推測していました。
public static <T extends Comparable<T>> boolean greater(T t1, T t2) {
return t1.compareTo(t2) > 0;
}
だからこそ、List(Any) と書けるようにしたのだと思います。
反変/共変は理解できていませんが、皆様の議論を見ていると scala では型チェックを
重視・活用しているように思えます。OCaml でのようにコンパイル段階でエラーを検出・
指摘することに拘っているのだろうと推測します。
Python duck typing のように、実行時にエラーを吐き出していたのでは、ビジネス用途
で使い物にならないのだと思います。C++ template でのように、大量の意味を掴みにく
いエラーメッセージを吐き出すことは、scala ではないのだと思います。
もうすこし調べてみます。ありがとうございました。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5019日前に更新/158 KB
担当:undef