Thread overview | ||||||
---|---|---|---|---|---|---|
|
September 22, 2020 Array of Algebraic argument syntax | ||||
---|---|---|---|---|
| ||||
Hi everyone! What's the syntax for passing an array of Algebraics? definition: class None {} class Value = Algebraic!(int, double, string, None); void printValue(Value[] values) { foreach(value; values) { value.writeln; } } usage attempts: printValue([4.5]); printValue(Value[4.5]); printValue(Value[](4.5)); |
September 22, 2020 Re: Array of Algebraic argument syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kasra Sadeghi | On 9/22/20 2:30 PM, Kasra Sadeghi wrote:
> Hi everyone!
>
> What's the syntax for passing an array of Algebraics?
>
> definition:
>
> class None {}
> class Value = Algebraic!(int, double, string, None);
That should be 'alias' instead of 'class':
import std.variant;
import std.stdio;
class None {}
alias Value = Algebraic!(int, double, string, None);
void printValue(Value[] values) {
foreach(value; values) {
value.writeln;
}
}
void main() {
printValue([Value(4.5), Value("hello"), Value(42)]);
}
Ali
|
September 22, 2020 Re: Array of Algebraic argument syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli | On Tuesday, 22 September 2020 at 21:36:48 UTC, Ali Çehreli wrote:
> ...
> alias Value = Algebraic!(int, double, string, None);
> ...
> void main() {
> printValue([Value(4.5), Value("hello"), Value(42)]);
> }
Thanks! Wish there was a less redundant syntax for the arrays.
|
September 22, 2020 Re: Array of Algebraic argument syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kasra Sadeghi | On 9/22/20 2:53 PM, Kasra Sadeghi wrote:
> On Tuesday, 22 September 2020 at 21:36:48 UTC, Ali Çehreli wrote:
>> ...
>> alias Value = Algebraic!(int, double, string, None);
>> ...
>> void main() {
>> printValue([Value(4.5), Value("hello"), Value(42)]);
>> }
>
> Thanks! Wish there was a less redundant syntax for the arrays.
>
>
Do you really need to write literal Value arrays? If not, you would build a Value[] at runtime without seeing the syntax above.
Still, here is a function template that provides better syntax:
Value[] valueArray(Args...)(Args args) {
Value[] result;
foreach (arg; args) {
result ~= Value(arg);
}
return result;
}
void main() {
printValue(valueArray(4.5, "hello", 42));
}
Ali
|
Copyright © 1999-2021 by the D Language Foundation