我有结构和类,我希望能够使用该to!T(string)方法以通用方式从字符串轻松创建.但是,我不确定如何"覆盖"该方法以获得此类行为.从我的类型到字符串很容易(我只是定义opCast(string)),但我正在寻找甚至可能吗?
Jon*_*vis 11
如果要将类型转换opCast为string,请不要定义for string.这toString是为了什么.writeln和format等中使用toString,而不是铸造或to,并to会使用toString,所以这绝对是更好地界定toString转换对string.您可以定义opCast为转换为类型的其他比string.然后你可以使用铸造或与to.
现在,如果要将a转换string为用户定义的类型,那么只需定义相应的构造函数即可to.
import std.conv;
struct S
{
int i;
this(string s)
{
i = to!int(s);
}
string toString()
{
return to!string(i);
}
}
void main()
{
auto s = to!S("42");
assert(s.i == 42);
auto t = to!string(s);
assert(t == "42");
}
Run Code Online (Sandbox Code Playgroud)