Extend the call site default argument expansion mechanism?
Uknown
sireeshkodali1 at gmail.com
Fri May 11 15:03:41 UTC 2018
On Friday, 11 May 2018 at 14:26:21 UTC, Jonathan M Davis wrote:
> On Thursday, May 10, 2018 14:15:18 Yuxuan Shui via
> Digitalmars-d wrote:
>> So in D I can use default argument like this:
>> [...]
>> Is this a good idea?
>
> It seems like really risky move, honestly, because it means
> that the function is then affected by what is and isn't
> declared within the scope where it's called. __FILE__ and
> __LINE__ are well-defined as to what they mean. No can declare
> them to mean something else. You don't have symbol resolution
> issues or naming conflicts. And they're solving a problem that
> can't actually be solved without compiler help. However, if you
> just want to change what arguments get passed to foo within
> your module, all you have to do is define another foo inside
> the module and have it forward to the original one with
> whatever arguments you want. What you're suggesting here seems
> to introduce name pollution issues without solving anything
> that can't easily be solved with the language as-is.
>
> - Jonathan M Davis
I see what you're saying and I agree with you. I think a better
way would be to try and extend the `with` syntax to work with
arbitrary functions, rather than only objects. That would make it
more useful. So something like:
---
void f1(allocator alloc, ...){}
void f2(allocator alloc, ...){}
...
void fn(allocator alloc, ...){}
void main()
{
with(MyAllocator) {
f1(...);
f2(...);
...
fn(...);
}
}
---
More information about the Digitalmars-d
mailing list