Solidity ParserError: Ожидаемый идентификатор, но получил '='
Почему код ниже содержит ошибку (ParserError: Expected identifier but got '='
).
contract Test {
struct Box {
uint size;
}
Box public box;
box.size = 3; //<-- error here
constructor() public {
}
}
Это работает, если я поставлю box.size = 3;
в constructor
!
contract Test {
struct Box {
uint size;
}
Box public box;
constructor() public {
box.size = 3;
}
}
1 ответ
Решение
Грамматика не позволяет выполнять задания на уровне контракта. Но он допускает объявления переменных состояния, и они могут содержать инициализатор. Поэтому вы можете инициализировать его с
Box public box = Box({ size: 3 });
или же
Box public box = Box(3);