Passing $ as a function argument

crimaniak crimaniak at gmail.com
Thu Oct 11 06:39:15 UTC 2018


On Wednesday, 10 October 2018 at 23:04:46 UTC, James Japherson 
wrote:

> The whole point is not to use $ as an identifier but to specify 
> to the compiler of that it can rewrite it.

It's called 'alias'.

// compile time
int foo(alias index)(int[] a)
{
	return a[index(a.length)];
}

// run time
int barr(int[] a, size_t function(size_t) index)
{
	return a[index(a.length)];
}

int main()
{
	import std.range: iota;
	import std.array: array;
	import std.stdio: writeln;

	int[100] a = iota(0,100).array;

	a.foo!(l => l-3).writeln;
	a.barr(l => l-3).writeln;

	return 0;
}


More information about the Digitalmars-d mailing list