Comments 12
А как здесь это делают? Постят подсвеченый html или есть специальные теги?
Старые знакомые :). Привет.
attr_accessor :title, :length
У меня мысль такая
Не работает потому, что в случае
Если сделать
То вариант
@#{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"
заработает.Да, верно. Но есть такие объекты для которых inspect возвращает нечто, не являющееся Ruby выражением, равное им
Кроме того иногда хочется дефолным значением иметь конкретный объект в памяти, а не нечто ему равное, но другое.
$ ruby -e "puts lambda{|x| x*x}.inspect" #<Proc:0xb7d17df8@-e:1>
Кроме того иногда хочется дефолным значением иметь конкретный объект в памяти, а не нечто ему равное, но другое.
Статью нужно было назвать «Культура метапрограммирования» или «О вреде eval»:)
А можно вот так вот определять новые методы классу?
class Test
end
Test.class_eval { def rest; puts 'hello'; end }
class Test
end
Test.class_eval { def rest; puts 'hello'; end }
Sign up to leave a comment.
1. Metaprogramming patterns — 25кю. Метод eval