What's the use of 'typeof','typeid','__traits','is' ?
IchorDev
zxinsworld at gmail.com
Sun Aug 31 12:06:42 UTC 2025
On Sunday, 24 August 2025 at 03:13:38 UTC, David T. Oxygen wrote:
> The code above has simplified. It defines some simple classes.
>
> And now, I have a function:
> ```d
> import std.algorithm.searching;
> MyReal is_int_or_float(string inputs){
> if(inputs.canFind('.'))
> return new MyFloat(inputs);
> else
> return new MyInt(inputs);
> }
>
> ```
This would be a great use-case for `std.sumtype.SumType`:
```d
import std.sumtype: SumType, match;
alias Number = SumType!(double, long);
Number isIntOrFloat(string input){
import std.algorithm.searching: canFind;
import std.conv: to;
if(input.canFind('.'))
return Number(input.to!double());
else
return Number(input.to!long());
}
void main(){
string input = "3.14";
Number result = isIntOrFloat(input);
import std.stdio: writeln;
result.match!(
(long x){ writeln("integral: ",x); },
(double x){ writeln("floating: ",x); },
);
}
```
More information about the Digitalmars-d-learn
mailing list