Hatena::ブログ(Diary)

NyaRuRuの日記 RSSフィード

archive

2007-12-29

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

書いたわけ

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

対応表

るりまの「500 Internal Server Error」と MSDN Library の「Enumerable メソッド (System.Linq)」とをにらめっこしながらざっと分かる範囲でマッピング.間違いありそうなのでご注意を.さらに対応関係が微妙な奴も ? マーク付けてたりそもそも対応するものが無いことにしていたり結構適当なのでご注意を.

とりあえずコピペしたものをひな形に使う等して,誰か完成させて下さいませ.あとついでに prototype.js の Enumerable とのマッピングもやってくれるとうれしいかも.

Ruby 1.9.0LINQ
all?All
any?Any
collectSelect
countCount/LongCount
cycle
detectFirstOrDefault
dropSkip
drop_whileSkipWhile
each_cons
each_slice
each_with_index
entriesToArray
findFirstOrDefault
find_allWhere
find_index
firstFirstOrDefault/Take
grepWhere
group_byGroupBy
include?Contains
injectAggregate
mapSelect
maxMax
max_by
member?Contains
minMin
min_by
minmax
minmax_by
none??Any
one??Single
partitionToLookup
reduceAggregate
reject?Where
selectWhere
sortOrderBy
sort_by
takeTake
take_whileTakeWhile
to_aToArray
zip

複数の LINQ 演算子の合成を許せば (例えば min_by を Select + Min みたいな感じ) もうちょっと表が埋まるかも.

露骨に「この発想は (LINQ に) なかったわ」ってのは,cycle/each_cons/each_slice/zip ぐらいですかね.

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

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

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

将来の質問ネタに

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

更新履歴

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

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証