Помимо очевидных синтаксических ошибок (например, 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
Однако, обратите внимание, что я довольно уверен, что вся идея в корне ошибочно.
как вы хотите, чтобы функция вела себя? заполнение массива и создание классов отлично. Вы хотите, чтобы он вернул первый класс, где новый преуспел? –
Я только понял, что вы имеете в виду. Да, для учебных целей я просто хочу, чтобы он вернул true, когда он создает допустимый экземпляр A B или C. – willoller
Что такое 'tryClasses (in)' и кто этот 'end' в конце? –