@rd4com
mojo 确实有一个对象类型(参见 matmul 示例和 Object):
def main():
var a = object([0,1])
var b = a
b[0] = 1
print(a) #[1, 1]
print(b) #[1, 1]
它还具有 PythonObject 类型:
def main():
var a = PythonObject([0,1])
var b = a
b.__setitem__(0,1)
print(a) #[1, 1]
print(b) #[1, 1]
使用指针实现泛型结构也是一种可能性(非仅内存类型或 T 的register_passable)。
如果多个实例共享同一个 Pointer[T],则一个实例中的空闲会影响另一个实例,因此必须深思熟虑。
特别注意不要免费两次或以错误的顺序进行,例如。
以正确的顺序手动免费操作可能会很棘手,如果不小心,会导致错误。
可以肯定的是,在使用寿命内,它将符合人体工程学,并且在设计上显然更安全。
对于需要定义方法以复制实例的事实:copyinit()
这可能是一件好事,想想应该只有一个实例的类型,这是一种强制执行的方法。
有些类型需要是“唯一的”,并依赖于所有权的转移takeinit()moveinit()
有一个装饰器可以合成一些方法,包括为了避免样板/冗余编码。@valuecopyinit()
我不知道它如何与类一起工作。