gpt4 book ai didi

d - 为什么 D 的变体看起来令人困惑

转载 作者:行者123 更新时间:2023-12-04 03:26:50 27 4
gpt4 key购买 nike

我试验了 D 语言,发现 std.variant 很酷。

但后来我觉得它很困惑。

例如,

import std.stdio;
void main()
{
string x = "";
x ~= 'v';
writeln(x);
}

这符合预期。

但是这个,
import std.stdio;
import std.variant;
void main()
{
Variant x = "";
x ~= 'v';
writeln(x);
}

给出了一个难以破译的 RUNTIME 错误。

这是为什么?

这是消息。
std.variant.VariantException@std/variant.d(1675): Variant: attempting to use incompatible types char and immutable(char)[]
----------------
??:? inout @property inout(immutable(char)[]) std.variant.VariantN!(32uL).VariantN.get!(immutable(char)[]).get() [0x106f84654]
??:? long std.variant.VariantN!(32uL).VariantN.handler!(immutable(char)[]).handler(std.variant.VariantN!(32uL).VariantN.OpID, ubyte[32]*, void*) [0x106f7559d]
??:? std.variant.VariantN!(32uL).VariantN std.variant.VariantN!(32uL).VariantN.opOpAssign!("~", char).opOpAssign(char) [0x106f84a1d]
??:? _Dmain [0x106f74d8d]

最佳答案

这似乎是 std.variant.Variant 中的一个错误。这里的问题是charimmutable(char)是两种不同的类型,和 Variant不知道他们是密切相关的。对此有两种不同的解决方法: make x举行char[]而不是 immutable(char)[] (也称为 string),或制作 'v' immutable(char) :

import std.stdio;
import std.variant;
void main()
{
Variant x = "".dup; // Duplicate the string to make it a heap-allocated, mutable string.
x ~= 'v';
writeln(x);
}

或者
import std.stdio;
import std.variant;
void main()
{
Variant x = "";
x ~= cast(immutable)'v'; // Make 'v' explicitly immutable.
writeln(x);
}

关于d - 为什么 D 的变体看起来令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900728/

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