Solidity ParserError: ожидаемый идентификатор, но получил '='

saitam спросил: 13 июня 2018 в 07:15 в: constructor

Почему код ниже содержит ошибку (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 ответ

Есть решение
Antti Haapala ответил: 14 июня 2018 в 08:25

Грамматика не допускает присвоений на уровне контракта. Но он позволяет объявлять переменные состояния, и они могут содержать инициализатор. Поэтому вы можете инициализировать его с помощью

Box public box = Box({ size: 3 });

или

Box public box = Box(3);