Solidity - ParserError: Expected primary expression when using var
Solidity - ParserError: Expected primary expression when using 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 中使用)。
声明 reference types 时(在您的情况下为 string
和 struct
),您需要指定它们的数据位置 - 在您的情况下为字符串参数 memory
。并且结构的 memory
或 storage
取决于您是否只想在 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);
我正在尝试创建一个结构并添加映射,以便稍后可以使用以下代码使用其地址检索它。
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 中使用)。
声明 reference types 时(在您的情况下为 string
和 struct
),您需要指定它们的数据位置 - 在您的情况下为字符串参数 memory
。并且结构的 memory
或 storage
取决于您是否只想在 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);