[ ArgumentList ] vs. @( ArgumentList )
Jonathan M Davis
jmdavisProg at gmx.com
Wed Nov 7 01:22:34 PST 2012
On Wednesday, November 07, 2012 10:13:47 Jonas Drewsen wrote:
> My vote goes to @(a,b,c) and @a @b @c.
>
> I never understood why some builtin storage class keywords have @
> in front of them (e.g. @property, @safe, @disable) and some don't
> (e.g. pure, nothrow).
>
> IMHO the cleanest design would be to have builtins as plain
> keywords (ie. no @ in front). And then @xxx is reserved for UDA.
>
> I understand that this would be a breaking change and not likely
> to happen - just want to know the reasoning behind it.
It mainly came down to not wanting to add new keywords. By using @safe instead
of safe, safe could still be used as a variable or function or whatnot. There
was some discussion of which should have @ on them on which not (e.g. nothrow
vs @nothrow was debated), but the decision was fairly arbitrary. If anything
though, had we not cared about breaking code or whether D looked similar to
other languages, we probably would have made _all_ attributes start with @
(including stuff like @public). It would have been wonderfully consistent that
way, but it wasn't ultimately deemed a good idea.
So, basically, @ was introduced to avoid adding more keywords. It certainly
makes sense to extend it for using with user defined attributes, but that
wasn't really the original intention.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list