前の日 / 次の日 / 最新 / 2009-07

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2009-07-07 Tue

条件演算子を含む式を左辺に [D言語]

条件演算子・・・厨?

おまけ:
   C++ では、条件演算子を含む式を左辺に持ってくることも可能なのは覚えておいても損はない。
でも使うなよ?絶対使うなよ?

(a < b ? a : b) = c;

a = 1, b = 2, c = 3 のとき a に c が代入される。

D では駄目だった。

(a < b ? a : b) = c; //Error: conditional expression a < b ? a : b is not a modifiable lvalue

無理やりやってみる。

import std.stdio;

ref T _(T)(ref T x)
{
    return x;
}

void main()
{
    int a=1,b=2,c=3;

    _(a < b ? a : b) = c;
    writefln("a = %d, b = %d, c = %d",a,b,c);
}

実行結果

a = 3, b = 2, c = 3

ref関数を使うと、それっぽくできた。