#solidity #smartcontracts
Вопрос:
Я новичок в солидности. Я изучаю картографию в солидности. Я чувствую замешательство по поводу того, почему я должен использовать сопоставление?
Например, вот пример сопоставления, который я видел:
contract TestContract {
struct Buyer {
bytes32 name;
uint price;
}
mapping(address => Buyer) buyerInfo;
}
Похоже, он пытается использовать адрес для получения информации о покупателе, которая определена в структуре. Но что, если я создам новый элемент типа адреса в структуре, тогда, похоже, нет необходимости использовать концепцию сопоставления.
contract TestContract2 {
struct Buyer {
address addr;
bytes32 name;
uint price;
}
}
Может ли кто-нибудь объяснить, в чем выгода или основная причина использования картографии?
Ответ №1:
contract TestContract {
struct Buyer {
bytes32 name;
uint price;
}
mapping(address => Buyer) buyerInfo;
Buyerp[] buyerInfoList; // array
function testFunc() {
// Map: we can access easily
Buyer bb = buyerInfo[msg.sender];
// Array: we need for loop to access it
for(uint i = 0;i<buyerInfoList.length;i ) {
if(buyerInfoList[i].address == msg.sender) {
Buyer bb = buyerInfo[i];
}
}
}
}
И, в солидности, map
данные являются закрытыми, поэтому никто не может расширить свои данные без ключа.
и, если мы знаем key
, мы можем легко получить доступ к его значению(одна строка).