gpt4 book ai didi

type-conversion - 覆盖D中使用的T的!T()?

转载 作者:行者123 更新时间:2023-12-03 22:41:11 25 4
gpt4 key购买 nike

我有一些结构和类,希望能够使用to!T(string)方法以通用方式轻松地从字符串创建。但是,我不确定如何才能“替代”这种行为。从我的类型转到字符串很容易(我只需要定义opCast(string)),但是我正在寻找的可能吗?

最佳答案

如果要将类型转换为opCast,请不要为string定义string。那就是toString的目的。 writelnformat等使用toString而不是casting或to,而to将使用toString,因此定义toString转换为string绝对更好。您定义opCast以便转换为string以外的其他类型。然后,您可以将其与c​​ast或to一起使用。

现在,如果要将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");
}

关于type-conversion - 覆盖D中使用的T的!T()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com