Adding syntacti sugar for simple "readonly" attribute ?

bauss jj_1337 at live.dk
Thu Oct 26 23:04:41 UTC 2017


On Thursday, 26 October 2017 at 21:19:28 UTC, LunaticWare wrote:
> Hello everyone i am new to the D community and i really enjoy 
> programming in D,
> i haven't done anything significant so far. but being a very 
> lazy person,
> when writing a bit of code i noticed that maybe for such a 
> simple
> thing we could have a shorter syntax.
> i don't know if this is the correct way to suggest enhancement 
> to D,
> and i am sorry if this is already in the language.
> so maybe we could add syntactic sugar for "readonly" attributes.
> here is simple example, where the following code
>
> ---
>
> class Foo
> {
>     @readonly int bar = 12; // or maybe "@directread" ?
>
>     this(string baz)
>     {
>         this.bar = baz;
>     }
> }
>
> ---
>
> would be the same as
>
> ---
>
> class Foo
> {
>     private string bar_;
>
>     this(string baz)
>     {
>         this.bar_ = baz;
>     }
>
>     @property string bar()
>     {
>         return this.bar_;
>     }
> }

The first example would not equal the second, because you could 
set bar from anywhere within the module.

Immutable will already do your behavior.

class Foo
{
     immutable string bar;

     this(string baz)
     {
         bar = baz;
     }
}

...
auto foo = new Foo("hello");

foo.bar ~= " World!"; // Error.

string bar = foo.bar; // Okay.

bar ~= " World!"; // Okay, because "bar" is not immutable, nor is 
it referring to foo.bar.


More information about the Digitalmars-d mailing list