В чем преимущество или основная причина использования «отображения» в солидности?

#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 , мы можем легко получить доступ к его значению(одна строка).