繁体   English   中英

Ethereum Solidity是否支持关联数组?

[英]Does Ethereum Solidity support Associative Arrays?

例如-具有命名索引或哈希的数组。 类似于PHP代码;

$array = array(
"foo" => "some foo value",
"bar" => "some bar value",);

谢谢

实体支持一种称为映射的类型:

contract MappingExample {
    mapping(address => uint) public balances;

    function update(uint newBalance) {
        balances[msg.sender] = newBalance;
    }
}

http://solidity.readthedocs.io/en/develop/types.html#mappings

Solidity支持一种称为struct的结构,该结构从现有类型创建新类型。 这些可以在内部的职能之间传递,但目前尚未在合同与外界之间传递。

只需添加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);
    }
}

并且浏览器可靠性显示构造函数在构造函数设置之后返回。

在此处输入图片说明

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM