On Monday, 4 May 2020 at 01:49:28 UTC, Ali Çehreli wrote:
On 5/3/20 1:44 PM, Marcone wrote:
[...]

Still, the type of a variable would determine whether whether it's iterable.

As an improvement, the following program can be changed to call use() recursively to visit all members of e.g. structs (which can be determined by 'is (T == struct)').

import std.stdio;
import std.traits;

void use(T)(T var, size_t indent = 0) {
  static if (isIterable!T && !isSomeString!T) {
    foreach (i, e; var) {
      writefln!"%*s: %s"(indent, i, e);
    }

  } else {
    writefln!"%*s"(indent, var);
  }
}

void main() {
  int i = 42;
  string s = "hello";
  double[] arr = [ 1.5, 2.5, 3.5 ];
  use(i);
  use(s);
  use(arr);
}

Ali

Very good! Thank you!

Reply via email to