作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试验了 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);
}
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 中的一个错误。这里的问题是char
和 immutable(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/
很抱歉新手的问题,但是: 我最近才发现“=”运算符不只是处理对象/等等。值(value),也是引用。这很酷,但我认为这对变量来说是不一样的,它不会在存储整数或 float 的变量之间创建引用。后来我觉
我是一名优秀的程序员,十分优秀!