После того, как я создал некоторые структуры, которые принадлежат определенным адресам, я хочу получить обзор структур со связанными параметрами, касающимися адреса.
Итак, что я мог сделать для решения этой проблемы?
Если я запускаю свой код в 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, но она возвращает мне только первую структуру адреса