On 19.09.2017 23:17, nkm1 wrote:
... OTOH, booleans converting to numbers is a very questionable feature. > I certainly have never seen any good use for it. ...
Actually, it is useful enough to have a Wikipedia page: https://en.wikipedia.org/wiki/Iverson_bracket Example of a good use: void floodFill(dchar[][] data,dchar c,int i,int j) { void dfs(int a, int b) { if (a<0 || a >= data.length) return; if (b<0 || b >= data[a].length) return; if (data[a][b] == c) return; data[a][b] = c; foreach(i; 0 .. 4){ dfs(a + (i==0) - (i==1), b + (i==2) - (i==3)); } } dfs(i, j); } unittest { import std.algorithm, std.conv, std.array; auto data = ["###.####...##"d, "#....#...#..."d, "..#....##.###"d, "##...###...##"d, "####...#....."d, "#.#.#.#.#.#.#"d, "#####.#######"d] .map!(to!(dchar[])).array; floodFill(data, '#', 1, 1); assert(data==["#############"d, "#############"d, "#########.###"d, "########...##"d, "########....."d, "#.#.###.#.#.#"d, "#############"d]); }