У меня есть простое отображение:
mapping(address => string) professorsExam;
Как я могу проверить, msg.sender
является ли ключ в этом отображении, и если да, то получить его значение? Если это не так, я должен что-то вернуть.
string memory professorsExamHash = professorsExam[msg.sender]; // The hash of the exam owned by msg.sender
if(professorsExamHash == 0x0){
return "No exam hash asociated with this professor address";
}
Это не работает,
TypeError: Оператор == не совместим со строковой памятью типов и int_const 0
Я пробовал много других вещей. Но ==
пока не совместим ни с чем.
Вы можете проверить длину байтов значения. Вы делаете это, конвертируя строку в байты и проверяя длину. Если он больше 0, то он существует.
Ваш новый код будет выглядеть следующим образом:
if(bytes(professorsExamHash).length == 0){
return "No exam hash asociated with this professor address";
}