以太坊Solidity支持关联数组吗?

3
例如 - 带有命名索引或哈希的数组。类似于 PHP 代码;
$array = array(
"foo" => "some foo value",
"bar" => "some bar value",);

谢谢

2个回答

3

Solidity支持结构体,可以从现有类型创建新类型。在函数内部可以在不同函数间传递,但还不能在合约和外部世界之间传递。

除了Jacob所说的内容,你也可以将结构体存储在映射表(哈希表)中:

mapping(address => MyStruct) structsInMap;

或者在数组中:

MyStruct[] structsInList;

这是一个小例子,它遵循与ABI兼容的固定大小规则传递值。

contract StructExample {

    struct MyStruct {
        bool isMyStruct;
        uint amount;
        address[3] addressList;
        bytes32 name;
    }

    // storage instance of MyStruct
    MyStruct myStruct;

    function StructExample(
        uint amount, 
        address address1, 
        address address2, 
        address address3,
        bytes32 name) 
    {
        myStruct.isMyStruct = true;
        myStruct.amount = amount;
        myStruct.addressList = [address1, address2, address3];
        myStruct.name = name;
    }

    function getMyStruct() 
      constant
      returns(
          bool isMyStruct,
          uint amount,
          address[3] addressList,
          bytes32 name)
    {
        return (
            myStruct.isMyStruct, 
            myStruct.amount, 
            myStruct.addressList, 
            myStruct.name);
    }
}

希望这对您有所帮助。Browser Solidity显示构造函数设置后返回的结构值。

enter image description here

祝一切顺利。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接