"Тупик" является реализацией интерфейса, который существует для обеспечения data/a какого-то ответа. Например:
Xml Обычно это было бы обеспечено другим сервисом (быть им веб-сервис, другое приложение, база данных), но для улучшения тестируемость из кода, результаты "фальсифицируются".
А главное преимущество этого - то, что он позволяет утверждениям быть сделанными в модульных тестах на основе ожидаемых данных. Если ошибки возникают из-за ошибок данных, то тесты могут легко быть добавлены, новый созданный тупик (тиражирование ошибки данных) и код, произведенный для исправления ошибки.
Тупики отличаются к Насмешки , в котором они используются, чтобы представить и протестировать состояние из объекта, тогда как Насмешка тестирует взаимодействие .
Я думаю, что это намерение, но на самом деле вам просто нужно уменьшать и увеличивать счетчик, если вы имеете дело только с круглыми скобками. Если вы имеете дело с парами квадратных скобок, угловых скобок, фигурных скобок или любыми другими парами символов, которые вы хотите использовать, вам понадобится стек, как и вы.
Вы также можете использовать список, потянув за Элемент head постоянно включается, но на самом деле стек, вероятно, в любом случае реализован как список - по крайней мере, он находится в ocaml.
Почему возвращаемое значение и выходной параметр дают одинаковую информацию?
Вы можете вернуть int: -1 = сбалансированный, в противном случае - индекс ошибки.
Как сказал TheVillageIdiot, все в порядке. Вы также можете реализовать его рекурсивно, что может быть более элегантным, а может и нет. Наконец, вы можете потребовать, чтобы совпадающие круглые скобки содержали что-то допустимое между ними, чтобы разрешить «(a)», но не «()».