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 (Extension Methods)
余ってる (と思う) LINQ の Standard Operators (Simple Static Methods)
将来の質問ネタに
現在 System.Linq.Enumerable クラスと呼ばれているものは,当初 Sequence クラスと呼ばれていました.こいつの名前が Enumerable に変わった理由は私も知りませんが,Ruby や JavaScript の影響があったのかどうか,機会があったら聞いてみると面白いかもしれませんね.
更新履歴
- 2008年5月26日
- Ruby の partition は Enumerable.ToLookup で代用できることに気付いた