Trait or builtin that returns arguments passed to current function (if any)

bauss jj_1337 at live.dk
Thu Sep 9 09:31:05 UTC 2021


On Thursday, 9 September 2021 at 09:28:17 UTC, bauss wrote:
> On Thursday, 9 September 2021 at 09:22:35 UTC, Dukc wrote:
>> On Wednesday, 8 September 2021 at 21:53:21 UTC, Per Nordlöw 
>> wrote:
>>> Adam, and like others including me, are longing for a 
>>> trait/builtin [1] that returns the parameters passed to the 
>>> function of the current scope (if any). Has such a thing been 
>>> proposed previously?
>>>
>>> [1] 
>>> http://dpldocs.info/this-week-in-d/Blog.Posted_2021_07_26.html#on-my-wish-list
>>
>> Why it should be a built-in? Apart from that requirement,
>> `Parameters!(mixin(__FUNCTION__))` does the trick. A bit 
>> verbose but not much more so than the `__traits(...)` 
>> built-ins.
>
> That doesn't do the same thing.
>
> Parameters returns the type of each parameter.
>
> __arguments in the case of OP holds the value of each parameter.
>
> ```d
> Parameters!(mixin(__FUNCTION__))
> ```
>
>
> Ex. for a function like:
>
> ```d
> void a(int x, int y);
> ```
>
> It'll actually give you:
>
> ```d
> (int, int)
> ```
>
> When really OP wants:
>
> ```d
> [x, y]
> ```

The problem with ParameterIdentifierTuple which would give you 
the identifiers is that you get string representations of them, 
so you have to use them in a way like I did in my example above.

Because:

```d
ParameterIdentifierTuple!(mixin(__FUNCTION__))
```

Gives you:

```d
tuple("x", "y")
```


More information about the Digitalmars-d mailing list