Игнорирует ли Ethereum Remix определенные параметры функции при развертывании контракта?

У меня есть контракт, разработанный с использованием remix. После копирования контракта и написания тестов мокко я получил следующую ошибку при запуске теста развертывания:

Ошибка: недопустимое количество параметров для "undefined"

1) «перед каждым» перехватом для «развертывает контракт»: Ошибка: недопустимое количество параметров для «undefined». Получил 0, ожидалось 1!

Конструктор ранее использовал параметр, и я понял, что по ошибке оставил тип переменной address в качестве параметра для конструктора Test (контракта), который я не предоставил в тесте. После удаления параметра (который не используется в конструкторе) тест проходит.

function Test(address) public {...

Он работал в ремиксе (без ошибок / предупреждений), как я и ожидал, поэтому я не уловил его, прежде чем скопировать код в редактор.

Игнорирует ли remix неверные параметры при развертывании контракта? Есть ли способ поймать это в ремиксе?


person Don P    schedule 02.02.2018    source источник
comment
ЗАПРОС ТЕГОВ: Я заметил, что нет тега для «ремикса», твердотельной IDE Ethereum. Solidity - допустимый тег, но ремикса не существует. На специализированном сайте обмена Ethereum есть этот тег, но разве он не должен быть доступен здесь для вопросов, связанных с программированием? Простой поиск показывает, что вопросов достаточно, чтобы ответить на один. Есть теги для многих IDE и текстовых редакторов, но не для ремиксов. У меня нет репутации, иначе я бы создал ее сам.   -  person Don P    schedule 03.02.2018


Ответы (1)


Игнорирует ли remix неиспользуемые параметры при развертывании контракта?

Ну, на самом деле он выдает предупреждение, когда вы не используете параметр:

предупреждение

Предупреждение: неиспользуемый параметр функции. Удалите или закомментируйте имя переменной, чтобы отключить это предупреждение. функция demo (address _unused) public pure returns (uint8) {

Но кажется, что если вы предоставляете только тип переменной без имени, то remix просто игнорирует его:

без предупреждения


Есть ли способ поймать это в ремиксе?

Возможно, это удастся отловить в сборке если значение безымянной переменной хранилось в стеке, но это довольно глубокое понимание того, как компилируется код Solidity, и может не соответствовать цели простого тестирования.

person Roman Frolov    schedule 02.02.2018