gpt4 book ai didi

arrays - 如何在结构中初始化数组

转载 作者:行者123 更新时间:2023-12-04 04:10:23 25 4
gpt4 key购买 nike

我有一个结构购买,在其中我要进行一系列付款。但是,当我尝试在makePayment方法中添加新的Payments数组时,从solidity编译器返回了一个错误:“内部编译器错误:尚未将类型struct Payment memory []内存复制到存储中”。当我将mayment数组更改为storagememory时,我得到了相同的错误。我在下面添加了相关代码。

可以坚定地做我想做的事情吗?我在文档中看不到任何明确表示不可能的内容,但是我也看不到任何示例在做我想做的事情。 :|

  struct Payment {
address maker;
uint amount;
}

struct Purchase {
uint product_id;
bool complete;
Payment[] payments;
}
Purchase[] purchases;

function makePayment(uint product_id, uint amt, uint purchase_id) returns (bool) {

Payment[] payments;
payments[0] = Payment(address, amt);
purchases[purchase_id] = Purchase(product_id, false, payments);
}

最佳答案

设置时,您需要手动更改付款数组的长度。

可以使用:

  Payment[] payments;
payments[payments.length++] = Payment(address, amt);

或者:
Payment[] payments;
payments.push(Payment(address, amt));

要在Purchase中设置Payments数组,而不是创建一个数组并将其设置为Purchase.payments,可以执行以下操作:
uint purchase_id = purchases.length++;
purchases[purchase_id].product_id = product_id;
purchases[purchase_id].complete = false;
purchases[purchase_id].payments.push(Payment(msg.sender, amt));

延长购买时间将自动创建新属性。然后,您可以手动设置它们。

关于arrays - 如何在结构中初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743893/

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