In the new D release why use free functions instead of properties?
Idan Arye via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Aug 18 17:54:23 PDT 2014
On Monday, 18 August 2014 at 21:17:11 UTC, Jonathan M Davis wrote:
> On Monday, 18 August 2014 at 21:02:09 UTC, Gary Willoughby
> wrote:
>> In the new D release there have been some changes regarding
>> built-in types.
>>
>> http://dlang.org/changelog.html?2.066#array_and_aa_changes
>>
>> I would like to learn why this has been done like this and why
>> it is desired to be free functions rather than properties?
>
> Probably because they never should have been properties in the
> first place. Properties are supposed to emulate variables,
> whereas something like dup is clearly an action. So, it's
> clearly not supposed to be a property. However, because D
> doesn't require parens on a function with no arguments, you can
> still call it without parens. Some of the changes probably also
> help with cleaning up the AA internals, which is sorely needed.
>
> - Jonathan M Davis
Also std.algorithm's heavy usage of passing delegates as template
arguments makes it more elegant to use free functions:
import std.algorithm;
import std.compiler;
void main()
{
int[][] arr=[[1,2],[3,4]];
static if (version_minor<=65){
auto arr2=arr.map!(a => a.dup)();
}else{
auto arr2=arr.map!(a.dup)();
}
arr2[0][0]=9;
assert(arr2[0][0] == 1);
}
More information about the Digitalmars-d-learn
mailing list