Project Elvis
Satoshi
satoshi at rikarin.org
Mon Oct 30 10:04:00 UTC 2017
On Sunday, 29 October 2017 at 20:37:21 UTC, bauss wrote:
> On Sunday, 29 October 2017 at 20:15:41 UTC, Ola Fosheim Grøstad
> wrote:
>> [...]
>
> But casting to bool is what you use to tell whether something
> is valid or not.
>
> true = valid, false = invalid.
>
> If you want 0 to be valid for a type then you wrap around it
> with opCast.
>
> Ex.
>
> ---
> import std.stdio;
>
> struct MyInt
> {
> int value;
>
> bool opCast(T : bool)()
> {
> return value >= 0;
> }
> }
>
> void main()
> {
> MyInt a = MyInt(1);
> MyInt b = MyInt(0);
> MyInt c = MyInt(-1);
>
> if (a) writeln("a is valid");
> if (b) writeln("b is valid");
> if (c) writeln("c is valid");
> }
> ---
>
> Output:
> a is valid
> b is valid
TL;DR
This could be done by maybe monad.
int? a = 0;
if (a) writeln("a is valid");
BTW: Thanks for implementing the Elvis feature.
More information about the Digitalmars-d
mailing list