Ruby 1.9.0 Enumerable モジュールと LINQ Standard Operators 対応表 (書きかけ)

書いたわけ

yhara くんの『それany?で』を読んでいて,Enumerable.Any メソッド (System.Linq)」が来るのが面白かったので作ってみた.「同化はすでに始まっているのだ!」

対応表

るりまの「http://doc.loveruby.net/refm/api/view/class/Enumerable:title=」と MSDN Library の「Enumerable メソッド (System.Linq)」とをにらめっこしながらざっと分かる範囲でマッピング.間違いありそうなのでご注意を.さらに対応関係が微妙な奴も ? マーク付けてたりそもそも対応するものが無いことにしていたり結構適当なのでご注意を.
とりあえずコピペしたものをひな形に使う等して,誰か完成させて下さいませ.あとついでに prototype.js の Enumerable とのマッピングもやってくれるとうれしいかも.

Ruby 1.9.0 LINQ
all? All
any? Any
collect Select
count Count/LongCount
cycle
detect FirstOrDefault
drop Skip
drop_while SkipWhile
each_cons
each_slice
each_with_index
entries ToArray
find FirstOrDefault
find_all Where
find_index
first FirstOrDefault/Take
grep Where
group_by GroupBy
include? Contains
inject Aggregate
map Select
max Max
max_by
member? Contains
min Min
min_by
minmax
minmax_by
none? ?Any
one? ?Single
partition ToLookup
reduce Aggregate
reject ?Where
select Where
sort OrderBy
sort_by
take Take
take_while TakeWhile
to_a ToArray
zip

複数の LINQ 演算子の合成を許せば (例えば min_by を Select + Min みたいな感じ) もうちょっと表が埋まるかも.
露骨に「この発想は (LINQ に) なかったわ」ってのは,cycle/each_cons/each_slice/zip ぐらいですかね.

以下逆に LINQ の方にあって Ruby 1.9.0 の Enumerable モジュールでは対応するものがなさげなもの.全部が全部 Ruby に対応するものが無いわけじゃないです.あと,動的な型つき言語である Ruby では意味のないメソッドもちらほら.

余ってる (と思う) LINQ の Standard Operators (Simple Static Methods)

将来の質問ネタに

現在 System.Linq.Enumerable クラスと呼ばれているものは,当初 Sequence クラスと呼ばれていました.こいつの名前が Enumerable に変わった理由は私も知りませんが,RubyJavaScript の影響があったのかどうか,機会があったら聞いてみると面白いかもしれませんね.

更新履歴

  • 2008年5月26日
    • Ruby の partition は Enumerable.ToLookup で代用できることに気付いた