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;
    }

}

person sunwarri0r    schedule 07.07.2018    source источник
comment
Я не использую Solidity, но полагаю, что у вас не может быть назначений вне функции.   -  person Barmar    schedule 08.07.2018


Ответы (1)


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

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

or

Box public box = Box(3);
person Antti Haapala    schedule 08.07.2018