bool concat patternmatching with switch
Salih Dincer
salihdb at hotmail.com
Thu May 30 12:56:40 UTC 2024
On Tuesday, 28 May 2024 at 19:39:45 UTC, monkyyy wrote:
> ```d
> switch(i%3==0,i%5==0){
> case 1,1: return "fizzbuzz";
> case 0,1: return "buzz";
> case 1,0: return "fizz";
> case ?,?: return i.to!string;
> }
> ```
Maybe smarter solutions can be produced with BitFlags. At least
it will be more readable...
```d
import std.stdio;
import std.typecons;
enum Status
{
Idle = 1 << 0, // 0001
Running = 1 << 1, // 0010
Paused = 1 << 2, // 0100
Stopped = 1 << 3 // 1000
}
void main()
{
BitFlags!Status currentStatus;
currentStatus = Status.Running;
switch (currentStatus)
{
case Status.Idle:
writeln("Durum: Idle");
break;
case Status.Running:
writeln("Durum: Running");
break;
case Status.Paused:
writeln("Durum: Paused");
break;
case Status.Stopped:
writeln("Durum: Stopped");
break;
default:
writeln("Bilinmeyen durum");
break;
}
currentStatus = Status.Paused;
switch (currentStatus)
{
case Status.Idle:
writeln("Durum: Idle");
break;
case Status.Running:
writeln("Durum: Running");
break;
case Status.Paused:
writeln("Durum: Paused");
break;
case Status.Stopped:
writeln("Durum: Stopped");
break;
default:
writeln("Bilinmeyen durum");
break;
}
}
```
SDB at 79
More information about the dip.ideas
mailing list