Как стать автором
Обновить

Комментарии 12

НЛО прилетело и опубликовало эту надпись здесь
А как здесь это делают? Постят подсвеченый html или есть специальные теги?
НЛО прилетело и опубликовало эту надпись здесь
Стал использовать vim. Там есть необходимая фича, которая выдает HTML, который не портится хабрахабровским обработчиком. Но ой как сильно мне бы хотелось писать код так:
<source lang="ruby">
 puts "Hello"
</source>

Это же просто сделать. Алё, админы!
Старые знакомые :). Привет.
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>

Кроме того иногда хочется дефолным значением иметь конкретный объект в памяти, а не нечто ему равное, но другое.

Поэтому я и написал «То вариант attr_accessor :title, :default => „no title“ заработает. „
Статью нужно было назвать «Культура метапрограммирования» или «О вреде eval»:)
А можно вот так вот определять новые методы классу?

class Test

end

Test.class_eval { def rest; puts 'hello'; end }

Да
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории