コメント: イテレーション比較
Rubyはスクリプト言語にオブジェクト指向くっつけて、さらに関数型言語的な要素も混ぜてるって言語だから、当然といえば当然かも。 純粋な関数型言語だったら、例えばML List.map (fun x -> x * x) lst とか書けば、リストlstの各要素を自乗したリストを得られます。 例に挙がっている、C系統のJava等の手続き型言語では、そもそも関数を型として扱うことは出来ないため、Collectionのような特殊なクラスを言語レベルで用意し、for-eachのような文法上の後付けをしたに過ぎないのです。(だから、本来の美しさ的には、無いほうが美しい) Javaでの特殊な構文としては、inner-classがあります。これを使えば、オブジェクトとして関数を包み込んで、内部イテレータっぽく渡すということが可能です。 public interface Comparable { public class SortList { // 使用 のようにすれば、実際MyList.sortを呼び出す部分に、コードを埋め込めます。ただ、この追加仕様は、AdapterやListenerのために作られた節が強いと思われ、上記の例の場合などは、外部イテレータを使ったほうが簡潔かと思われます。 投稿者 ゆりあ : October 28, 2003 12:04 AMなるほど。 資料(なぜかLispページですが…) コメントする
|