著作一覧 |
ふと、コマンドラインの引数をログへ書き出したくなった。
public void Main(string[] args)
もし、Rubyなら、args.join(',') と書くところだ。
が、args.と打って出てくるLINQのJoinは列挙の結合で、役に立たない。
そこでインテリセンスのやつを眺めると、Aggregateが、Rubyのinjectに近いので、使ってみる。
args.Aggregate((a, s) => a + "," + s)
お、思い通りの結果となる上に1要素の場合は",1st-elem"みたいなことにならず、良い感じだ。
しかし、無引数だと例外となる。Aggregateを呼び出すには最低1要素は必要なのだ。
(args.Length == 0) ? "" : args.Aggregate((a, s) => a + "," + s)
なんかうれしくない。と、ここまで来て、やはりJoinがあったような気がしてきた。というか以前メモしたはず。
string.Join(",", args)
が答えだった。
というように、インテリセンスとオブジェクト指向プログラミング言語は相性が良いが、クラスオブジェクトのメソッドは2級市民化してしまうのだった。
ジェズイットを見習え |