Visual Studio 2005/2008 IDE (выбирают файл автоматически в проводнике решения),

Rails 3

Вы неправильно поняли, как работает try, из тонкого руководства :

try (* a, & amp; b )
Вызывает метод, идентифицированный методом символа, передавая ему любые аргументы и / или указанный блок, как это делает обычный Ruby Object#send.

Однако, в отличие от этого метода, исключение NoMethodError не будет вызвано, и вместо него будет возвращено nil, если принимающий объект является объектом nil или NilClass.

И версия try, которая исправлена ​​в NilClass :

try (* args)
Вызов try для nil всегда возвращает nil.

Таким образом, try не игнорирует вашу попытку вызвать несуществующий метод объекта, он игнорирует вашу попытку вызвать метод в nil и возвращает nil вместо вызова исключения. Метод try - это простой способ избежать проверки nil на каждом шаге в цепочке вызовов методов.


Rails 4

Поведение try изменилось в Rails 4, поэтому теперь оно:

Вызывает публичный метод, имя которого выглядит как первый аргумент, как public_send, за исключением того, что, если получатель не отвечает на него, вызов возвращает nil, а не вызывает исключение.

Так что теперь try заботится об обеих проверках одновременно. Если вы хотите поведение Rails 3, есть try! :

То же самое, что и try, но вызовет исключение NoMethodError, если получатель [sic] равен не nil и не реализует [sic] испытанный метод.

10
задан Nathan 18 April 2014 в 20:54
поделиться

2 ответа

Итак: блог

15
ответ дан 3 December 2019 в 17:21
поделиться

Инструменты → Параметры → Проекты и решения → Отслеживать активный элемент в обозревателе решений

8
ответ дан 3 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

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