| |
 | Posted by ProtectAndHide in reply to thebluepandabear | Permalink Reply |
|
ProtectAndHide 
Posted in reply to thebluepandabear
| On Monday, 30 January 2023 at 21:54:49 UTC, thebluepandabear wrote:
>
> ...
> Interesting, so maybe there is a use case for a purely static type or namespace?
>
> The standard library as well uses `final abstract class` a couple of times, which can also be thought as a type of namespace.
>
> All these 'hacks' to workaround a namespace-like feature are ... interesting... So maybe such a feature would help the language?
>
> Just askin questions!
Yes, a C# like static class would be nice in D:
(i.e. you mark it as static, or whatever, and all the following then applies:
- Is sealed
- Cannot be instantiated or contain Instance Constructors.
- must contain only static members.
btw, it seems 'static' applied to class at the module level, in D, means nothing at all??
btw. Discovered that D has support for static constructors, which I didn't know.
Below is not that 'ugly', really, but I certainly prefer the clean, C# way (i.e. just mark it as static, and that's that).
// cannot inherit from, since it is final.
// cannot instantiate it with 'new', since it is annotated with @disable
//
// NOTE: static here is meaningless and can be removed.
static final class Algo
{
@disable this();
static this()
{
Message = "Hello!";
}
static:
string Message;
void drawLine() {};
}
|