まとめて配列
しばらく更新しない間にD言語の方が更新されていた。
遅延評価はなにやらすごそうだけど、価値が判断できん。(Haskell知らないので)
配列リテラルと、可変個テンプレート型引数が嬉しい。
で、こんなのを作ってみた。
char[] ToString(T1, T2, TA...)(T1 value1, T2 value2, TA values) { const char[] delim = ", "; char[] buffer = ToString(value1) ~ delim ~ ToString(value2) ~ delim; foreach (v; values) { buffer ~= ToString(v); buffer ~= delim; } if (buffer.length > delim.length) buffer = buffer[0..length-delim.length]; return buffer; }
で、実験。
{ mixin Map!(char[], int); ToString( 'A', 0, 3.14, 2.71 + 3.2i, [1, 2, 3], [1.1, 2.2, 3.3], Map( Entry("AAA", 1), Entry("BBB", 2), Entry("CCC", 3) ) ).writefln(); ToString(1).writefln(); ToString(1, 2, 3).writefln(); [1, 2, 3].ToString().writefln(); } ... A, 0, 3.14, 2.71+3.2i, [1,2,3], [1.1,2.2,3.3], [(AAA:1),(BBB:2),(CCC:3)] 1 1, 2, 3 [1,2,3]
お〜、でけてるでけてる。
しっかし、型の違うものを配列につっこんで、foreach でぐるぐる回せるってぇのはすっごいな。Tuple もなぁんも定義してないのに。