В Ruby есть "method_missing", в Tcl есть "unknown", а большинство высокодинамичных языков имеют эквивалентную конструкцию, которая вызывается при вызове неопределенного метода.Имеет смысл добавить такую функциональность;что-то должно произойти, и нет причин не позволять программисту переопределять это.Это довольно тривиально, чтобы добавить, и это делает для некоторой аккуратной демонстрации "проверьте, что мой язык может сделать".
Где это поведение действительно полезно в реальном коде приложения?is:
- Может быть полезно для запуска отладчика без разматывания стека (но я не уверен, будет ли это считаться «обычным кодом приложения», и в большинстве случаев исключение будет работать так же хорошо).
- Для "магических" прокси-объектов ... т.е. ленивый объект, который создается или загружается при первом использовании без изменения интерфейса (хотя это кажется довольно простым делом с помощью других средств).
Существуют ли другие законные применения?
Разъяснение: я не считаю «синтаксический сахар, чтобы избежать необходимости вводить кавычки», законным использованием.Другие могут, я не.