Помимо очевидных синтаксических ошибок (например, in
- это повторно найденное слово, а null
пишется nil
в Ruby), код, который вы показали, должен работать так же, как и сейчас, и действительно, когда яскопируйте и вставьте его в мою установку Ruby.Это предполагает, конечно, что классы Foo::A
, Foo::B
и Foo::C
действительно существуют.Если они этого не делают, то, очевидно, код не может работать.
Это, однако, полностью не-Rubyish и нарушает почти все правила кодирования в книге:
- отступравно 2 пробелам
- имена методов
snake_case
, а не camelCase
- , явно проверяющие равенство
nil
- это нет-нет, просто предпочтительнее просто вызвать #nil?
try_classes
не совсем название метода, раскрывающего намерение - , а WTF означает
in
значение? - Рубиисты гораздо предпочитают методы более высокого порядка, чем явные циклы
Вот более Rubyish версия кода, который вы написали:
def can_create_object?(*args)
[Foo::A, Foo::B, Foo::C].none? do |klass|
klass.new(*args).nil?
end
end
Тем не менее, обратите внимание, что я довольно уверен, что вся идея в корне ошибочна.