Почему я получаю “Слишком много входные параметры” ошибка, если не передающая кого-либо?

Разница в том, что в случае 1 вы создаете новый объект каждый раз перед вызовом методаEach, а в случае 2 - нет.

В сочетании с этим факт, что ваш первый тест мутирует объект. Если все тесты ссылаются на один и тот же объект (т. Е. Случай 2), то эта мутация повлияет на любой код, который выполняется после первого теста. Если вместо этого объект перезаписывается перед каждым тестом (случай 1), то мутация не повлияет на другие тесты.

Есть несколько вариантов решения этой проблемы. Один состоит в том, чтобы просто сохранить случай 1; Сбрасывая в известное состояние каждый раз, вы можете получить чистое состояние, чтобы все тесты работали. Другой вариант - не изменять объект. Возможно, тесты могли бы скопировать объект, а затем изменить эту копию.

7
задан gnovice 5 November 2010 в 00:54
поделиться

2 ответа

Когда Вы выполняете вызов:

obj.roll_dice;

Это на самом деле эквивалентно:

roll_dice(obj);

Так obj "секретный" автоматический аргумент, передаваемый roll_dice. Если Вы переписываете метод roll_dice для принятия единственного входного параметра (даже если Вы не используете его) вещи должны работать правильно.

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

Для получения дополнительной информации об объектно-ориентированном программировании в MATLAB вот ссылка на онлайн-документацию.

13
ответ дан 6 December 2019 в 12:54
поделиться

Я считаю, что вы также можете обойти это, объявив roll_dice статическим методом.

3
ответ дан 6 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: