immutable auto a = Array!int([1, 2, 3]);
Error: cannot implicitly convert expression (((Array!int __slArray2557 = Array(RefCounted(RefCountedStore(null)));) , __slArray2557).this([1, 2, 3])) of type Array!int to immutable(Array!int)创建用户定义的不可变对象
通常我只是想在运行时创建一些对象,初始化它,然后让它不变,但如果我尝试这样做,我从上面得到的错误。
看来,我可以投一个可变对象不可变对象
immutable auto a = cast(immutable Array!int) Array!int([1, 2, 3]);
为什么我必须将它转换为immutable
?
正在铸就永恒的合法吗?
我几乎对D几乎一无所知,但是如果你将变量声明为不可变的,编译器可能会期望右边的表达式是不可变的对象,所以当然如果不是这种情况,它可能会给你一个错误。关于合法与否,我不知道,但如果您没有收到答复,我建议您在官方网站的D论坛之一上提出同样的问题。 – nbro