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

Reply via email to