Как получить обзор созданных структур в отображении для конкретного адреса в прочности? - PullRequest
0 голосов
/ 30 марта 2019

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

Если я запускаю свой код в remix, я получаю только мою первую сохраненную структуру для адреса. Но я хочу вернуть все сохраненные структуры для одного адреса. Я знаю, что мы не можем перебрать отображение, но, возможно, можно сделать какой-нибудь индекс-счетчик для массива структур, чтобы решить это? - Так можно ли хранить индекс массива в переменной?

pragma solidity ^0.4.17;
contract Prescribe {

struct Prescription {
        address patients_address;
        string medicament;
        string dosage_form;
        uint amount;
        uint date;
        //uint index_counter;
 }

mapping (address => Prescription[]) public ownerOfPrescription;
address [] public patients;

function createPrescription(address patients_address, string 
medicament, string dosage_form, uint amount, uint date) public  
restricted {

ownerOfPrescription[patients_address].push(Prescription({
     patients_address: patients_address,
     medicament: medicament,
     dosage_form: dosage_form,
     amount: amount,
     date: date
}));
patients.push(patients_address);
}

function getOverview(address patient) public view restricted 
returns(string, string, uint, uint) {

for(uint i = 0; i < ownerOfPrescription[patient].length; i++) {
 if(ownerOfPrescription[patient][i].patients_address == patient) {
   return(ownerOfPrescription[patient][i].medicament, 
          ownerOfPrescription[patient][i].dosage_form, 
          ownerOfPrescription[patient][i].amount, 
          ownerOfPrescription[patient][i].date);
    }
  }

}

Поэтому я хочу, чтобы на экране были возвращаемые значения всех отдельных структур одного адреса, как в функции getOverview, но она возвращает мне только первую структуру адреса

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

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

0 голосов
/ 31 марта 2019

Ну, он возвращает только первый, потому что после утверждения

 if(ownerOfPrescription[patient][i].patients_address == patient)

return true, ваш код выполняет инструкцию return, которая заставит элемент управления выйти из функции, и дальнейшая инструкция не будет выполнена.

...