On Monday, 10 June 2019 at 07:45:42 UTC, vitalfadeev wrote:
On Monday, 10 June 2019 at 07:41:40 UTC, vitalfadeev wrote:
How to?
I plan scan First array with checkers:
[checker, checker, checker]
...and store result to Second array:
[0, 0, 1]
In next code 'r' not reference. But expected ref.
import std.range : zip;
foreach(checker, ref r; zip(checkers, result.set)) {
r = checker();
}
What is the best way for speed and beautyfull D code?
Detailed:
import std.range : zip;
import std.stdio : writeln, write;
struct Result {
byte[] set;
}
alias Callback = bool function();
Callback[] checkers;
Result result;
bool false_cb() { return 0; }
bool true_cb() { return 1; }
void init() {
checkers ~= &false_cb;
checkers ~= &false_cb;
checkers ~= &true_cb;
result.set.length = checkers.length;
}
void check() {
foreach(checker, ref r; zip(checkers, result.set)) {
r = checker();
}
}
void print() {
foreach(r; result.set) {
write(r, " ");
}
writeln();
}
void main() {
init();
check();
print();
}
https://run.dlang.io/is/Plqcq5