Guest User

Untitled

a guest
Apr 25th, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. class Object
  2. def destruct(*arg)
  3. instance_variables.map{ |k| k.to_s.split('@').last.to_sym }.select {|k| arg.include?(k)}.each do |k|
  4. main = TOPLEVEL_BINDING.eval("self")
  5. main.singleton_class.class_eval { attr_accessor "#{k}" }
  6. main.send("#{k}=", eval("#{k}"))
  7. end
  8. end
  9. end
  10.  
  11. class Hash
  12. def destruct(*arg)
  13. select {|k| arg.include?(k)}.each do |k, v|
  14. main = TOPLEVEL_BINDING.eval("self")
  15. main.singleton_class.class_eval { attr_accessor "#{k}" }
  16. main.send("#{k}=", v)
  17. end
  18. end
  19. end
  20.  
  21. class MyClass
  22. attr_reader :a
  23. def initialize
  24. @a = 'b'
  25. end
  26. end
  27.  
  28. ## EXAMPLES
  29. my_class = MyClass.new
  30. my_class.destruct(:a)
  31. p a
  32.  
  33. hash = { a: 'b', b: 'a'}
  34. hash.destruct(:b)
  35. p b
Add Comment
Please, Sign In to add comment