1. Потому что методы возвращают объекты другого класса.
2. Насколько я помню это ограничение парсера Ruby-вского (где-то читал)
4. A, остальные выдадут ошибку нет такого-то метода для nil класса.
У меня мысль такая @#{method} #{ "||= #{options[:default]}" if options[:default] }
Не работает потому, что в случае attr_accessor :title, :default => "no title" получается следующий код: class Song
def title
# дай вам бог понять, что тут написано
# не пишите так никогда!
@title ||= no title
end
def title=(v)
@title = v
end
end
Если сделать @#{method} #{ "||= #{options[:default].inspect}" if options[:default] }
То вариант attr_accessor :title, :default => "no title" заработает.
2. Насколько я помню это ограничение парсера Ruby-вского (где-то читал)
4. A, остальные выдадут ошибку нет такого-то метода для nil класса.
@#{method} #{ "||= #{options[:default]}" if options[:default] }Не работает потому, что в случае
attr_accessor :title, :default => "no title"получается следующий код:class Song
def title
# дай вам бог понять, что тут написано
# не пишите так никогда!
@title ||= no title
end
def title=(v)
@title = v
end
end
Если сделать
@#{method} #{ "||= #{options[:default].inspect}" if options[:default] }То вариант
attr_accessor :title, :default => "no title"заработает.