Отображение карт в солидности - PullRequest
0 голосов
/ 22 сентября 2018

Итак, я пытаюсь создать структуру данных, где byte32 сопоставляется с массивом адресов, каждый адрес сопоставляется с uint.

Я думаю о методе ниже, но это не похожесправа:

mapping (byte32 => mapping (address[] => uint))

Если возможно, пожалуйста, помогите мне с этим.Если описание проблемы недостаточно четкое, сообщите мне об этом.

Пример. Существует свойство, которое сопоставляется с массивом владельцев (address) (владельцев собственности) и каждымвладелец сопоставляется со ставкой (uint), которой они владеют в этой собственности.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Пример. Существует свойство, которое сопоставляется с массивом владельцев (адрес) (владельцы имущества), а каждому владельцу сопоставляется доля (uint), которой они владеют в этом свойстве.

Способ реализации этого описан ниже с использованием struct

struct Division {
    address owner;
    uint256 plots;
}

mapping(bytes32 => Division[]) Properties;    

function addDivision(bytes32 _property, address _owner, uint256 _plots) 
   public returns (bool success) {


    Division memory currentEntry;

    currentEntry.owner = _owner;
    currentEntry.plots = _plots;


    Properties[_property].push(currentEntry);

    return true;
}


function getPlot(bytes32 _property, address _owner) public view returns (uint) {


    for(uint i = 0; i < Properties[_property].length;  i++) {
        if(Properties[_property][i].owner == _owner)
          return Properties[_property][i].plots;
        }
    return 9999;
}
0 голосов
/ 22 сентября 2018

Да, это возможно, и это рекомендуемый способ сделать это.

Следует помнить, что вы не можете просто перебирать элементы (как если бы вы были массивом), но если ваше приложение не имеетЕсли вы нуждаетесь в этом, то с вами все в порядке.

Еще одна вещь, которую стоит рассмотреть, - это создание struct с идентификаторами и атрибутами, но, опять же, это зависит от вашего конкретного приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...