gpt4 book ai didi

dart - Dart中的memcpy等效项

转载 作者:行者123 更新时间:2023-12-03 03:22:16 25 4
gpt4 key购买 nike

Dart是否提供任何形式的类似于memcpy的功能?我想将一个对象的数据复制到另一个对象的地址:

var foo = Foo("hi");
var bar = Foo("hello");

memcpy(&foo, &bar, sizeof(Foo));

最佳答案

没有。

Dart不允许您如此访问内存,并且在没有类协作的情况下,它无法浅拷贝对象。

如果要复制对象,则必须使用构造函数创建一个新对象,并将其填写在字段中。 Dart构造函数可以执行任何操作,并且某些类的构建方式依赖于它们维护某种一致的全局状态的构造函数。例如,一个类可以通过使用final int id = _staticCounter++;初始化一个字段来为其对象分配连续的ID。复制该对象将打破所有对象具有不同ID的不变性。

尚无浅拷贝的解决方法。

对于深拷贝,有一种解决方法。如果您的平台支持dart:isolate,则可以向您自己发送一个对象:

import "dart:mirrors";
Future<T> clone<T>(T value) {
return (ReceivePort()..sendPort.send(value)).first;
}

并非所有值都可以通过发送端口发送。并非所有类对于非使用构造函数创建的对象都能正常工作。

关于dart - Dart中的memcpy等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61863813/

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