MQLでLinqチックに書く

心が折れたなんて言いながら、なんだかんだで作った。
まぁ心が2,3度折れることはよくあることでして。

こんな感じに書ける。

問題点

引数に参照でしか渡せないstructで定義された型は使えない。
(関数オブジェクト自体を参照渡しにすれば・・・どっかで不都合があるか面倒くさくなったかでやめた。)

留意点

元となるEnumerableが解放されると芋づる式にそれ以降のEnumerableも解放される。
新規Enumerableを生成しない関数(TryFirstなど)の場合、評価に使う関数オブジェクトは直後に解放される。
(Countなど内部でEnumerableを生成するものは芋づる式に)
Max,Min,Averageなどは要素の型によりコンパイル時にエラーを吐くので別途staticクラスに定義。

改良余地

Zipもあると地味に便利。Scan,Unfoldなどはまだ必要となる場面が想像できないので保留。

About houzkin

Leave a comment

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)