Как назвать аргументы в отображении?

В обычной функции прочности мы должны назвать аргументы следующим образом:

function getAddr(string AddrName) public. . .

Здесь аргументом является строка с именем AddrName.

Я создал децентрализованное приложение, которое упрощает взаимодействие со смарт-контрактом с использованием параметров URL. Таким образом, чтобы инициировать функцию с предварительно заполненными значениями в аргументах, я могу просто просмотреть: https://conteract.io/c/moataddress?function=getAddr&AddrName=owner

Но предварительно заполненные входные значения не работают, mappingтак как аргументы не названы в сопоставлениях: https://conteract.io/c/moatfund?function=Investors

mapping(address => uint256) public Investors;

При условии, что сопоставление используется чаще, есть ли способ назвать аргументы в сопоставлении или какой-либо обходной путь, который может решить эту проблему.

Спасибо.

Ответы (1)

Нет, это невозможно сделать, и это не проблема. Отображение представляет собой ассоциативную структуру, в которой уникальный ключ сопоставляется с другим значением. В вашем случае имя сопоставления Investors.

Вы можете либо найти лучшее имя (например, InvestorsBalanceкоторое будет определять, какой ключ и что сопоставляется), либо создать функцию для получения значения сопоставления с учетом ключа.

function getBalance(adddress investor) public returns(uint256) {
    return Investors[investor];
}

Но это зависит от разработчика контракта, поэтому вы не будете знать, что вы пытаетесь сделать с этим конкретным отображением. Вы не можете делать предположения о вашем инструменте.

Опция может заключаться в том, чтобы обогатить ваше децентрализованное приложение, запрашивая имя параметров сопоставления при импорте контракта. Но это может быть что-то, что вам может понадобиться хранить вне сети.