今日の雑記

生きることでいっぱいいっぱい

久々に D 言語チェックしたら

なんかいつのまにやら「1.036」とかになってた。最後が「1.029」で 4/24 なのでおよそ半年放置してた事に。
何が変わったのかしら...?以下めぼしい項目を列挙。

  • ライブラリ生成用の -lib スイッチ追加。(1.030)
  • 配列演算に対応(1.034)

こんなもんか。
「配列演算」とはなんぞや...?
配列演算 http://www.kmonos.net/alang/d/1.0/arrays.html#array-operations

多くの配列演算(ベクトル演算)を、 ループではなくより高レベルに表現することが可能です。 例えば、以下のループ

T[] a, b;
...
for (size_t i = 0; i < a.length; i++)
    a[i] = b[i] + 4;

は、a の各要素に b の各要素に 4 を足した値を代入するものですが、 これは配列演算で以下のように記述できます:

T[] a, b;
...
a[] = b[] + 4;

ベクトル演算は、スライス演算子が =, +=, -=, *=, /=, %=, ^=, &=, |= 演算子の左辺に来たときに行われます。 その場合の右辺式には、同じ長さと型の配列スライスか、 要素型の値を返す式の、 任意の組み合わせが使用できます。 ベクトル演算に対応している演算子は、 二項演算子 +, -, *, /, %, ^, &, |, と、 単項演算子 -, ~ です。
左辺のスライスと右辺のスライスには重なりがないものとします。 ベクトル代入演算は右から左の順番で評価され、 その他の二項演算子は左から右へ評価されます。 全てのオペランドはちょうど1回ずつ評価されます。 これは長さゼロの配列スライスを扱う場合も同様です。
配列の各要素が計算される順序は実装依存の定義で、 並列実行される可能性もあります。 アプリケーションは演算の順序に依存してはなりません。
実装ノート: 典型的なベクトル演算の多くは、 ターゲットマシンのベクトル演算命令を活用することが期待されます。

あいかわらず D はこういう無駄に便利な機能が追加されてますね。