JavaScriptでLINQ
- 2009-03-23
あまりJavaScriptっぽく見えませんが、JavaScript用のLINQライブラリを制作中です。1月頃に一応完成はしていたのだけど、あまり良い出来ではなかったので放置していました。けど、ふと思い立って昨日から改修を始めました。
- C#のLINQとの95%の互換性(メソッドオーバーロードの関係上、一部が無理)
- Achiralからパク……参考にさせていただいた標準LINQ外の拡張メソッド群
- ラムダ式もどきによる簡潔な記述
- C#の拡張メソッドのように簡単に俺俺メソッドを追加可能
という4つの特徴を持ちます予定。4番目は微妙かも。yield returnがないのでコードがゴチャついちゃってて。C#にないFromメソッドは、Array.prototypeを拡張するのはお行儀悪いので、配列をメソッドチェーン可能にさせるための苦肉の策。若干面倒くさいですが勘弁してやってください。Fromは連想配列を放り込んでも動作します。その場合、以降キーは.Key、値は.Valueで取り出すことになります。この辺もC#を模してます。あと、TraceメソッドはFirebugのコンソールに流せるようにしたりする予定。
この手のものは珍しくないし、LINQ風JavaScriptライブラリもそれなりな数があるんですが、ラムダ式もどきで簡潔に記述出来ることもあってわりかし使い勝手が良いほうに入るんじゃないかと思います。実際問題何が便利なのか、というと、IEでfilterやmapやreduceが使えるとでも思ってくれればどーでしょう。もしくはPerl のリスト操作を Ruby 風に的な。
4月中ごろまでには公開出来たらいいなあ……。
追記:完成しました - neue cc - linq.js - JavaScript用LINQライブラリ