在创建了一些属于特定地址的结构后,我希望获得具有地址相关参数的结构的概述。 那我该怎么做才能解决这个问题呢?
如果我在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函数那样拥有一个地址的所有单独结构的返回值,但是它只给我返回地址的第一个结构
答案 0 :(得分:0)
好吧,它只返回第一个,因为语句之后
if(ownerOfPrescription[patient][i].patients_address == patient)
return true,您的代码正在执行return语句,这将使控件从函数中退出,并且不再执行任何语句。
答案 1 :(得分:0)
在研究之后,我得出的结论是,仍然不可能获得结构体数组作为返回值。一个人只能访问数组的各个元素,对吗? -如果对此主题有任何更新,我将非常感谢。