当前位置: 首页 > 知识库问答 >
问题:

如何在Solity智能合约中以函数形式返回结构数组[副本]

莘睿
2023-03-14

我想从函数getPurchaseOrderForVendor返回一个结构数组。这是编译im时遇到的一个错误,比如invoiceSettlement。sol:44:80:ParserError:Expected type name function getPurchaseOrderForVendor(string vendorNameInput)constant ret urns(struct[])^

pragma solidity ^0.4.21;
pragma experimental ABIEncoderV2;

contract InvoiceSettlement {

struct PurchaseOrderStruct {

    uint8 requisitionNumber;
    uint8 poNumber;

}

PurchaseOrderStruct[10] public PurchaseOrderStructArray;


function InvoiceSettlement()
{
        for (uint i = 0; i < purchaseOrderLength; i++) {

                PurchaseOrderStructArray[i].requisitionNumber = 1;
                PurchaseOrderStructArray[i].poNumber = 1;

        }
}


function  getPurchaseOrderForVendor(string vendorNameInput) constant returns (struct[])
{


    struct[] memory y = new struct[](16);

    for (uint i = 0; i < purchaseOrderLength; i++)
    {
        y[i] = PurchaseOrderStructArray[i];
    }
    return (y);

}


}

共有1个答案

濮君植
2023-03-14

这份合同中不止一个错误,但不知道你想实现什么,我只会回答这个问题

应该是这样的

function getPurchaseOrderForVendor(string vendorNameInput) constant returns (PurchaseOrderStruct[])
 类似资料:
  • 我正在审查OpenZeppelin的智能合约,在许多情况下,我发现往往存在冗余或重复的继承。 在本例中,ERC20实现了已经实现了IERC20的IERC20元数据。尽管如此,合同实现了这两个。我试着移除冗余接口,效果很好。这有什么原因吗?是否仅出于清晰或易读目的?

  • 问题内容: 我有以下收藏 我要收集所有其 在主阵列 我已经试过了 但这给了我这样的输出 我想要这样的输出 问题答案: 你可以。与mongoose一起使用,因为它返回一个数组,与使用相比,简单使用更好 或使用核心驱动程序中的基础: 如果您不希望获得“与众不同”的结果,则与之大致相同: 或与 您还可以使用,基本上可以改变聚合过程和“幕后”(“仅返回字段部分”,而不是独特的聚合方法): MongoDB本

  • 问题内容: 对于以下C代码: 对于Win32,我得到以下反汇编: 对于Linux32: 我试图了解呼叫后呼叫者的行为方式的差异。为什么Linux32中的调用程序会执行这些额外的操作? 我假设两个目标都将遵循cdecl调用约定。cdecl不会为返回结构的函数定义调用约定吗? 编辑: 我添加了被调用者的实现。可以肯定的是,您可以看到Linux32被调用方会弹出其参数,而Win32被调用方不会: Win

  • 版本申明 pragma solidity ^0.4.0; 说明: 1 版本要高于0.4才可以编译 2 号表示高于0.5的版本则不可编译,第三位的版本号但可以变,留出来用做bug可以修复(如0.4.1的编译器有bug,可在0.4.2修复,现有合约不用改代码)。 引用其它源文件 全局引入 * import “filename”; 自定义命名空间引入 * import * as symbolN

  • 我接受了一次采访,被问到一个问题,我想了解解决方案。 创建一个递归函数,该函数返回给定长度的数组的可能组合数,这些数组可以由非重复连续整数数组组成。 f(数组,长度)=组合 数组=[0,1,2,3] 长度=2 组合=10(所有组合:[0,0][0,1][0,2][0,3][1,1][1,2][1,3][2,2][2,3][3,3]) 请注意,允许使用[0,0],但不允许使用[1,0],因为定义了[

  • 我想用C++做一个简单的函数来练习一下。它应该做与python中的range()函数相同的事情,但现在要简单得多。我遇到了一个问题,数组没有正确地从函数返回到主函数。我曾经在下面编码,得到了一个奇怪的错误。有人知道问题出在哪里吗?