やっぱり動的型付け言語は大規模開発で効率が悪い 4
■ このスレッドは過去ログ倉庫に格納されています
0190デフォルトの名無しさん
2011/11/28(月) 19:31:19.96軽いクラスのインスタンスとしてデフォルト値を用意する方法にしても、
それはそう実装できるというだけの話であって、APIで強制できる一般的方法
ではない。このmapはkeyが無い場合はこの値を返しますよ。単なるダミーの
値ですから信用して使ったりしないで下さいね云々と個別に規約を文書化する
必要がある。規約を知らないと判別出来ない。知らずにデフォルト値をいじる
バカも出る。これのどこが「一般的」?
良いところ「個別の解決策」止まりだし、似たような方法は別にJavaのMap
でもMap<K, Object>とでもすれば出来る。ただvalueについて静的型付けの
恩恵を受けられなくなるから、普通はやらない。
一般的な方法というのは言語の組み込み定数としてnullとは別にundefinedを
持っているとか、keyを与えるとkeyとvalueのペアを返す関数が用意されて
いるとか、keyが無いと例外を投げるとか、どういうmapであっても常に返値
だけで判別出来る方法。
「返り値のみから確定させる一般的方法」の有無というのは要するにこう
いった定数や関数が用意されているか否かの問題であって、型付けが動的
静的云々は全く関係が無い。
Javaだったらgetが例外を投げるようにするとかキーバリューのエントリー
を引っ張って返すようなメソッドを用意するとかすれば良いし、そういう
デコレーターを書くのも簡単。
でもJava Collections Frameworkはこれらを持っていない。書こうとすれば
書けるものを何故用意しなかったか理由は知らないけれども、単に需要が
薄いと判断された事は大いに想像できる。他の言語でも持っていない例は
多いところから見ても、需要は薄そうだ。
■ このスレッドは過去ログ倉庫に格納されています