Создание структуры вызывает странное поведение в remix ide

Проблема: Remix производит странное поведение со строковым параметром, за которым следует параметр массива

Воспроизвести:

contract ItemMarket is ERC721 {
  struct Item {
    string name;
    uint[3] others;
  }

  Item[] public items;

  function createItem(string _name, uint[6] _others) public {
    uint tokenId = items.push(Item({name: _name, traits:_traits})) - 1;
  }
}

Когда вы вызываете createItem () в ремиксе с аргументами "hello", [1,2,3], первый аргумент преобразуется в \u0000. Тот же вызов функции с теми же аргументами отлично работает при взаимодействии с контрактом через MEW.


person Maximus S    schedule 25.02.2018    source источник
comment
Это ошибка в Remix: github.com/ethereum/remix/issues/591   -  person Adam Kipnis    schedule 25.02.2018


Ответы (1)


Теперь это работает в последней версии Remix IDE:

pragma solidity 0.5.1;

import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token.sol";

contract ItemMarket is ERC721 {
  struct Item {
    string name;
    uint[3] traits;
  }

  Item[] public items;

  function createItem(string memory name, uint[3] memory traits) public {
    items.push(Item({name:name, traits:traits})) - 1;
  }
}
person William Entriken    schedule 21.01.2019