Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Object
- def destruct(*arg)
- instance_variables.map{ |k| k.to_s.split('@').last.to_sym }.select {|k| arg.include?(k)}.each do |k|
- main = TOPLEVEL_BINDING.eval("self")
- main.singleton_class.class_eval { attr_accessor "#{k}" }
- main.send("#{k}=", eval("#{k}"))
- end
- end
- end
- class Hash
- def destruct(*arg)
- select {|k| arg.include?(k)}.each do |k, v|
- main = TOPLEVEL_BINDING.eval("self")
- main.singleton_class.class_eval { attr_accessor "#{k}" }
- main.send("#{k}=", v)
- end
- end
- end
- class MyClass
- attr_reader :a
- def initialize
- @a = 'b'
- end
- end
- ## EXAMPLES
- my_class = MyClass.new
- my_class.destruct(:a)
- p a
- hash = { a: 'b', b: 'a'}
- hash.destruct(:b)
- p b
Add Comment
Please, Sign In to add comment