Discussion Thread: DIP 1030--Named Arguments--Final Review

Jonathan Marler johnnymarler at gmail.com
Wed May 13 19:57:50 UTC 2020


On Wednesday, 13 May 2020 at 19:44:32 UTC, Jonathan Marler wrote:
> On Wednesday, 13 May 2020 at 19:31:24 UTC, Steven Schveighoffer 
> wrote:
>> On 5/13/20 3:30 PM, Walter Bright wrote:
>>> On 5/13/2020 12:55 AM, Jacob Carlborg wrote:
>>>> Regarding renaming parameters will break the API. Swift 
>>>> supports giving a different name which are used locally:
>>>>
>>>> func copy(_ source: String, to destination: String)
>>>>
>>>> Should be called like this:
>>>>
>>>> copy("foo", to: "bar")
>>>>
>>>> `_` indicates that the argument can not be named when 
>>>> calling the function.
>>> 
>>> In D, we do:
>>> 
>>>     void copy(string, string destination);
>>
>> And how does the implementation of copy use that first 
>> parameter?
>>
>> -Steve
>
> I found a way:
>
> void copy(string, string destination)
> {
>     alias source = _param_0;
> }
>
> I didn't realize you could do this till now but this allows 
> functions to "opt-out" of using named parameters.  We may want 
> to consider using this pattern throughout phobos/druntime when 
> we want want to prevent parameter names from being apart of the 
> API.

I've created a PR to use this pattern in some of the functions in 
std.math: https://github.com/dlang/phobos/pull/7480

Let's see what the community thinks about this pattern and if it 
should be adopted by druntime/phobos in anticipation of enabling 
named parameters.



More information about the Digitalmars-d mailing list