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-16 Thu
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関数を使うと、それっぽくできた。