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);
Другие вопросы по тегам