понедельник, 2 июня 2008 г.
эх, красота
Кайф, это среди ночи и желтых фонарей проноситься по лужам, километрах эдак на 35, когда поднимаемые тучи брызг сливаются с каплями дождя, превращаясь в прохладную водяную подушку, и из всех звуков слышать только шелест воды и гул покрышек велосипеда.
хочется странного
class ActionHolder def initialize @my_id = rand(100000) @actions = [] end def add_action(&block) @actions.push( block ) end def process @actions.each{ |a| a.call } end end ah = ActionHolder.new ah.add_action{ puts "I'm the action" puts "my holder ID is: #{@my_id}" } ah.process Можно код передавать строкой и эвалить внутри класса, но: - теряется проверка синтаксиса до эвала - в редакторе не подсвечивается синтаксис внутри строки - бэктрэйс с эвалами труднопонимаем
class ActionHolder
def initialize
@my_id = rand(100000)
@actions = []
@@Getter = proc do |var_name|
raise "instance variable '#{var_name}' not defined" \
if !self.instance_variables.include? var_name
self.instance_variable_get( var_name )
end
end
def add_action(&block)
@actions.push( block )
end
def process
@actions.each{ |a|
a.call( @@Getter )
}
end
end
ah = ActionHolder.new
ah.add_action{ |obj|
puts "I'm the action"
puts "my holder ID is: #{obj['@my_id']}"
}
ah.process
Подписаться на:
Комментарии (Atom)