On Thursday, 23 March 2023 at 13:38:51 UTC, Alexander Zhirov wrote:
>Is it possible to convert such records inside the structure to the assigned type?
struct MyVal
{
string value;
// Here it would be possible to use an alias to this, but it can only be used 1 time
}
auto a = MyVal("100");
auto b = MyVal("11.2");
int MyInt = a; // Implicitly convert to target type
float myFloat = b; // Implicitly convert to target type
Here is another working variation of Ali's code, try it yourself:
import std.stdio;
import std.conv;
struct MyVal
{
string value;
T opCast(T)() { return value.to!T; }
}
void main()
{
auto a = MyVal("100");
auto b = MyVal("11.2");
auto MyInt = a.to!int;
auto myFloat = b.to!float;
writeln(MyInt, ", ", myFloat);
}
In general, all type casting and parsing stuff usually exist under std.conv
in the standard library, so you can take advantage of it.