Thread overview
foreach: How start a foreach count with specific number?
Jun 02, 2021
Marcone
Jun 02, 2021
Ali Çehreli
Jun 02, 2021
Paul Backus
June 02, 2021

Example:

// --args "C:\Users\Usuario\Downloads\dist\Programa.exe"

import modulo;

void main(string[] args){
if (args.length >= 2)
{
string exePrincipal = args[1];
chdir(exePrincipal.dirName);

	foreach(n, i; glob("*")){
		print("{} DATA {}".format(n, i));
	}
}

}

This print:

0 DATA icone.ico
1 DATA libgcc_s_dw2-1.dll
2 DATA libstdc++-6.dll
3 DATA libwinpthread-1.dll
4 DATA platforms
5 DATA Programa.d
6 DATA Programa.exe
7 DATA Programa.obj
8 DATA Programa.rc
9 DATA Programa.res
10 DATA Qt5Core.dll
11 DATA Qt5Gui.dll
12 DATA Qt5Widgets.dll
13 DATA qte5.d
14 DATA QtE5Widgets32.dll

But I don't want it starts with 0, but other number. How can I do it?

June 02, 2021
On 6/2/21 8:49 AM, Marcone wrote:

> But I don't want it starts with 0, but other number. How can I do it?

It is not configurable but is trivial by adding a base value:

import std.stdio;

enum base = 17;

void main() {
  auto arr = [ "hello", "world" ];
  foreach (i, str; arr) {
    const count = base + i;
    writefln!"%s: %s"(count, str);
  }
}

Ali

June 02, 2021

On Wednesday, 2 June 2021 at 15:49:36 UTC, Marcone wrote:

>

But I don't want it starts with 0, but other number. How can I do it?

Easiest way is to just add the starting number:

size_t start = 5;
foreach (n, i; glob("*")) {
    print("{} DATA {}".format(n, start + i));
}

You can also use std.range.enumerate, which takes the number to start with as an optional argument:

foreach (n, i; glob("*").enumerate(5)) {
    print("{} DATA {}".format(n, start + i));
}