Contract-Design
簡單契約的問題
我是一個新的學習者。
我的簡單契約無法在 remix 中編譯,我不知道如何修復第 18 行中的錯誤(uploadStudent 的聲明)。錯誤是“可以為數組、結構或映射類型指定數據位置,但給出了‘記憶體’。”
我可以請你幫忙嗎?
pragma solidity ^0.6.0; contract simple { mapping(uint => studentFile) public studentfiles; uint studentCount; struct studentFile { uint studentId; string studentName; uint age; } constructor() public { studentCount=0; } function uploadStudent(string memory _studentName, uint memory _age) public { // Increment student id studentCount ++; // Add File to the contract studentfiles(studentCount) = studentFile(studentCount, _studentName, _age); } }
您不能為數字類型指定數據位置。只需替換此位:
uint memory _age
和
uint _age
這行:
studentfiles(studentCount) = studentFile(studentCount, _studentName, _age);
和
studentfiles[studentCount] = studentFile(studentCount, _studentName, _age);
你的契約將被編譯。正如錯誤所述,您只能為數組、結構或映射類型指定記憶體位置。在 Solidity 中,字元串本質上是字節數組,這就是為什麼你可以為
_studentName
.您可以在此處閱讀 Solidity 文件中有關數據位置的更多資訊。