sturct assign в функции, приводящей к ошибке компиляции в solid - PullRequest
0 голосов
/ 01 февраля 2019

Я попытался присвоить структуру в функции, и встретил ошибку компиляции.Как я знаю, в смысле локальные переменные, такие как Area sz_area, являются типом хранилища, в то время как я путаюсь с тем, почему 'Area ("SuZhou", "270027")' является типом памяти?

конечно, если я использовалОбласть памяти sz_area = Area ("SuZhou", "270027"); ', все будет хорошо работать.Но я просто хочу знать причину.

Спасибо в любом случае.

pragma solidity ^0.4.25;

contract SturctDemo{

    struct Area{
        bytes32 name;
        bytes6 code;
    }

    struct Administrator{
        uint id;
        bytes32 name;
        bytes32 account;
        bytes32 passwd;

        mapping(uint=>Administrator)subordinateByIndex;

        Area adminArea;
    }


    // Ok
    Area  nk_area = Area("nk_area", "100001");

    function initByPosition() returns(uint, bytes32, bytes32, bytes32, bytes32, bytes6){
        // Compile error, TypeError: Type struct SturctDemo.Area memory is not implicitly convertible to expected type struct SturctDemo.Area storage pointer.
        // As I know, in solidity, local vars like Area sz_area is storage type, 
        // while my confusition is why 'Area("SuZhou", "270027")' is a memrory type?
        Area  sz_area = Area("SuZhou", "270027");

        // more
        // ...
    }
}
...