Какое законное использование для функциональности типа method_missing? - PullRequest
2 голосов
/ 31 августа 2010

В Ruby есть "method_missing", в Tcl есть "unknown", а большинство высокодинамичных языков имеют эквивалентную конструкцию, которая вызывается при вызове неопределенного метода.Имеет смысл добавить такую ​​функциональность;что-то должно произойти, и нет причин не позволять программисту переопределять это.Это довольно тривиально, чтобы добавить, и это делает для некоторой аккуратной демонстрации "проверьте, что мой язык может сделать".

Где это поведение действительно полезно в реальном коде приложения?is:

  • Может быть полезно для запуска отладчика без разматывания стека (но я не уверен, будет ли это считаться «обычным кодом приложения», и в большинстве случаев исключение будет работать так же хорошо).
  • Для "магических" прокси-объектов ... т.е. ленивый объект, который создается или загружается при первом использовании без изменения интерфейса (хотя это кажется довольно простым делом с помощью других средств).

Существуют ли другие законные применения?

Разъяснение: я не считаю «синтаксический сахар, чтобы избежать необходимости вводить кавычки», законным использованием.Другие могут, я не.

1 Ответ

1 голос
/ 31 августа 2010

Реализация динамического клиента веб-службы
http://mpathirage.com/the-importance-of-rubys-method-missing-concept/

  • Добавление лучшей отладочной информации на недостаточность,
  • параметры кодирования в имени метода
  • Строители, аксессоры, прокси Делегация

    http://olabini.com/blog/2010/04/patterns-of-method-missing/

...