Sealed classes - would you want them in D? (v2)

Gheorghe Gabriel knoppy273 at live.com
Sat May 19 17:38:48 UTC 2018


On Saturday, 19 May 2018 at 04:01:18 UTC, KingJoffrey wrote:
> On Friday, 18 May 2018 at 16:24:24 UTC, Gheorghe Gabriel wrote:
>> On Friday, 18 May 2018 at 15:57:06 UTC, bachmeier wrote:
>>> On Friday, 18 May 2018 at 15:40:52 UTC, KingJo
>>>
>>> class A {
>>>    private int x;
>>>    private(this) int y;
>>> }
>>>
>>
>> I agree that this looks a bit strange.
>> My initial proposal was "sealed" instead "private(this)" today.
>
> Mmm.. that brings me back to the idea of sealed at the class 
> level again.
>
> class A

> {
>    private int x;
>    private(this) int y;  // imagine if you have lots of private 
> variables.
>                          // this could become pretty anoying - 
> and kinda redundant.
> }
>
> class A
> {
>    private int x;
>    sealed int y; // again, what if you have lots of private 
> variables that
>                  // that you really want sealed.
> }
>
>
> // Now. Back to the idea of sealed.
> // abosolute consistency of your private variables.
> // no redundancy.
> // no some 'private', some 'sealed' confusion.
> // no some 'private' (but really public) some 'private(this) .. 
> confusion.
> //
> sealed class A{
>     private int x;
>     private int y;
> }
>
> downside, is adding a new keyword, and getting agreement on 
> what that new keyword should be.
>
> So I've come full circle again, and believe my idea is worth 
> further consideration.

If you have
sealed class A {
    private {
        // members
    }
}
Then you can't use the defualt 'private' if you need it for a 
specific member.

But if sealed is an access type of a member, 99% you will use 
sealed insted private in a class, so it is not redundant.

class A {
    sealed {
        // members
    }
    private int friendMember;
}

And you use private keyword only if you need to access that 
variable from a class/function/struct.. in the same module, like 
a friend.


More information about the Digitalmars-d mailing list