Solidity

堅固性。查找映射中是否存在鍵。然後得到它的值

  • November 26, 2019

我有一個簡單的映射:

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: Operator == 與類型字元串記憶體和 int_const 0 不兼容

我已經嘗試了很多其他的東西。但==到目前為止,任何東西之間都不兼容。

您可以檢查值的字節長度。為此,您可以將字元串轉換為字節並檢查長度。如果大於0,則存在。

您的新程式碼如下:

if(bytes(professorsExamHash).length == 0){
   return "No exam hash asociated with this professor address";
}

引用自:https://ethereum.stackexchange.com/questions/77847