On 1/21/22 6:24 PM, forkit wrote:
On Friday, 21 January 2022 at 22:25:32 UTC, forkit wrote:
I really like how alias and mixin can simplify my code even further:
//---
int[][int][] CreateDataSet
(const(int) recordsNeeded, const(int) valuesPerRecord)
{
int[][int][] records;
records.reserve(recordsNeeded);
const int iotaStartNum = 100_000_001;
alias iotaValues = Alias!"iota(iotaStartNum, iotaStartNum +
recordsNeeded).enumerate";
alias recordValues =
Alias!"iota(valuesPerRecord).map!(valuesPerRecord =>
cast(int)rnd.dice(0.6, 1.4)).array";
oof! use enums for compile-time strings ;)
```d
enum iotaValues = "iota(...";
```
foreach(i, id; mixin(iotaValues))
{
records ~= [ id: mixin(recordValues) ];
}
return records;
}
Not sure I agree that the mixin looks better.
Also, I'm curious about this code:
```d
iota(valuesPerRecord).map!(valuesPerRecord => cast(int)rnd.dice(0.6,
1.4)).array;
```
That second `valuesPerRecord` is not used in the lambda, and also it's
not referring to the original element, it's the name of a parameter in
the lambda.
Are you sure this is doing what you want?
-Steve