Solidity - ParserError:当使用var. 时期望的主表达式



我正在尝试创建一个结构体,并以这样一种方式添加映射,它可以在以后使用下面的代码使用其地址检索。

pragma solidity ^0.8.0;
contract Courses {

struct Instructor {
uint age;
string fName;
string lName;
}

mapping (address => Instructor) instructors;
address[] public instructorAccts;
function setInstructor(address _address, uint _age, string _fName, string _lName) public {
var instructor = instructors[_address]; //ERROR HERE
instructor.age = _age;
instructor.fName = _fName;
instructor.lName = _lName;

instructorAccts.push(_address) -1;
}
}

然而,我在var instructor = instructors[_address]

行得到一个错误错误是ParserError: Expected primary expression

我无法理解问题是什么以及如何解决它。有人能帮忙吗?

Solidity使用类型化变量,没有通用的var关键字(例如在JavaScript中使用)。


在声明引用类型(在您的示例中为stringstruct)时,您需要指定它们的数据位置—在您的示例中为字符串参数memory。结构体的memorystorage取决于你是想在setInstructor()函数(位置memory)的上下文中设置值,还是想在合约存储(位置storage)中设置值。

function setInstructor(address _address, uint _age, string memory _fName, string memory _lName) public {
// either `memory` or `storage` depending on your use case
Instructor storage instructor = instructors[_address];
// ... rest of your code

这一行也有语法错误

instructorAccts.push(_address) -1;
你可以通过删除-1 来修复它。
instructorAccts.push(_address);

最新更新