Solidity - 填充和使用数组的数组

时间:2017-02-28 16:40:49

标签: solidity

我与以下数据结构签订了合同:

struct Answer
{
    bytes32 name;   // short name (up to 32 bytes)
    uint voteCount; // number of accumulated votes
}

struct Question
{
    bytes32 name; // short name (up to 32 bytes);
    Answer[] answers;
}

Question[] public questions;

如何填充数组?

以下行无效:

function addQuestion(bytes32 _name, bytes32[] _answers) onlyOwner { // perhabs it should be possible that others as the owner can add
  Answer[] memory answersLocal = new Answer[](_answers.length);

  //Question memory question = Question(_name);
  for (uint i = 0; i < _answers.length; i++) {
    answersLocal[i] = Answer({
        name: _answers[i],
        voteCount: 0
      });
    }

    questions.push(Question({
      name: _name,
      answers: answersLocal
      }));

  }

我在这里得到错误:

  

将类型struct Roadshow.Answer memory []内存复制到尚不支持的存储。

2 个答案:

答案 0 :(得分:0)

如果您尝试通过web3或类似的桥接访问合同。

网桥仍然不支持数组阵列,但支持坚固!

我猜如果错误是稳固的,你会看到不同类型的错误。

希望这有帮助。

答案 1 :(得分:0)

使用return [ 'id' => $this->id, 'title' => $this->title, 'user_id' => $this->user_id, 'description' => $this->description, 'type' => $this->type, 'url' => $this->url, 'ranking_total' => $this->ranking_total, 'ranking_flag' => $this->ranking_flag, 'ranking_country' => $this->ranking_country, 'thumbnail' => $this->thumbnail, 'state' => $this->state, 'hit' => $this->hit, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'items' => ChannelItemResource::collection($this->items), ]; 方法代替Solidity分配。