On 1/27/20 1:15 PM, Herbert wrote:
On Monday, 27 January 2020 at 20:15:33 UTC, Steven Schveighoffer wrote:
On 1/27/20 3:06 PM, Herbert wrote:
How can I create a subrange type, for example ushort DiceValue {1 ...
6}?
D doesn't have a "Range" type like this. But you can use ranges of
different types by typing the literals. Note that D numeric ranges are
always exclusive at the upper end.
e.g.:
ushort(1) .. ushort(6+1)
-Steve
Thank you Steven!
How can I have a function parameter with this type (DiceValue)?
There is also iota() than generates a range:
import std.stdio;
import std.range;
void foo(R)(R range) {
pragma(msg, "Element type: ", ElementType!R);
writefln!"Using as a range:\n%-(%s\n%)"(range);
writeln("Using in a foreach loop:");
foreach (element; range) {
writeln(element);
}
}
void main() {
auto range = iota(ushort(1), ushort(7));
foo(range);
}
The output:
Using as a range:
1
2
3
4
5
6
Using in a foreach loop:
1
2
3
4
5
6
Ali