Blockchain 以太坊实体是否支持关联阵列?

Blockchain 以太坊实体是否支持关联阵列?,blockchain,ethereum,solidity,Blockchain,Ethereum,Solidity,例如-具有命名索引或哈希的数组。类似PHP代码的东西 $array = array( "foo" => "some foo value", "bar" => "some bar value",); 感谢Solidity支持一种称为映射的类型: contract MappingExample { mapping(address => uint) public balances; function update(uint newBalance) {

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

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

感谢

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

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

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

Solidity支持一种称为struct的东西,它可以从现有类型创建新类型。这些可以在内部功能之间传递,但目前还不能在合同和外部世界之间传递

除了Jacob所说的之外,还可以将结构存储在映射(哈希表)中:

或在阵列中:

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);
    }
}
和浏览器的坚固性,显示构造函数设置结构VAL后返回的结构VAL

希望能有帮助

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);
    }
}