Subrange type
Ali Çehreli
acehreli at yahoo.com
Mon Jan 27 22:05:57 UTC 2020
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
More information about the Digitalmars-d-learn
mailing list