如何创建对不可变类的可重新分配引用?

世界风暴

我如何创建对不可变类的引用,但又保留了重新分配引用的能力,就像string

import std.stdio;

immutable class Test {
    string test(){
        return "test";
    }
}

void main(){
    auto test = new Test;
    writeln(test.test);
}

这将导致错误,因为创建的实例不是不可变的:

test.d(14): Error: immutable method test.Test.test is not callable using a mutable object

new immutable 也不起作用,因为之后无法将结果变量分配给新变量。

immutable(Test)* 会起作用,但是有办法避免使用指针吗?

亚当·鲁佩

使用std.typecons.Rebindable http://dpldocs.info/experimental-docs/std.typecons.Rebindable.html#examples

import std.typecons;
class Widget { int x; int y() const { return x; } }
auto a = Rebindable!(const Widget)(new Widget);
// Fine
a.y();
// error! can't modify const a
// a.x = 5;
// Fine
a = new Widget;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过函数中的可变引用重新分配数组

重新分配类索引的数组(引用类型)

在golang中,如何从函数中重新分配外部引用?

如何重新分配一个引用钩子

在不重新分配变量的情况下将元素推送到不可变列表

无法更改枚举的一个值,因为它是对不可变变量的重新分配

可以使用解构来重新分配RUST中的不可变变量吗?

将类实例变量引用重新分配给局部变量引用

如何重新分配参数?

如何重新分配位?

重新分配方法返回的引用

对象引用变量重新分配

C ++类数组内存重新分配

如何创建一对相互引用的不可变Scala实例?

我可以将可变切片引用重新分配给自身的子切片吗?

存在可变类的引用时如何设置类的不可变性

Python 类设置器 - 每次创建新实例时都会重新分配类属性吗?

在张量流中重新分配非可变张量

如何创建不可变类的默认构造函数

如何创建具有不可变属性的javascript类

重新分配引用数组的变量会重新分配原始变量

如何在循環中重新分配更高範圍的引用變量

如何重新分配对象以便它也更改引用的对象?

如何使Rust可变引用不可变?

如何可变引用不可变值

如何实现可设置且可检索的状态而不会发生突变或重新分配?

如何使用KendoUI和jQuery在可排序列表上重新分配元素ID?

重新分配后如何释放内存

realloc()如何重新分配内存?