Class: Object
- Inherits:
- BasicObject
- Defined in:
- lib/ext/object.rb
Instance Method Summary collapse
-
#copy_instance_variables_from(object, exclude = []) ⇒ Object
Copies the instance variables of
objectintoself. -
#instance_values ⇒ Object
Returns a hash that maps instance variable names without “@” to their corresponding values.
- #instance_variable_defined?(variable) ⇒ Boolean
Instance Method Details
#copy_instance_variables_from(object, exclude = []) ⇒ Object
Copies the instance variables of object into self.
Instance variable names in the exclude array are ignored. If object responds to protected_instance_variables the ones returned are also ignored. For example, Rails controllers implement that method.
In both cases strings and symbols are understood, and they have to include the at sign.
class C
def initialize(x, y, z)
@x, @y, @z = x, y, z
end
def protected_instance_variables
%w(@z)
end
end
a = C.new(0, 1, 2)
b = C.new(3, 4, 5)
a.copy_instance_variables_from(b, [:@y])
# a is now: @x = 3, @y = 1, @z = 2
68 69 70 71 72 73 |
# File 'lib/ext/object.rb', line 68 def copy_instance_variables_from(object, exclude = []) #:nodoc: exclude += object.protected_instance_variables if object.respond_to? :protected_instance_variables vars = object.instance_variables.map(&:to_s) - exclude.map(&:to_s) vars.each { |name| instance_variable_set(name, object.instance_variable_get(name)) } end |
#instance_values ⇒ Object
Returns a hash that maps instance variable names without “@” to their corresponding values. Keys are strings both in Ruby 1.8 and 1.9.
class C
def initialize(x, y)
@x, @y = x, y
end
end
C.new(0, 1).instance_values # => {"x" => 0, "y" => 1}
19 20 21 22 23 24 |
# File 'lib/ext/object.rb', line 19 def instance_values #:nodoc: instance_variables.inject({}) do |values, name| values[name.to_s[1..-1]] = instance_variable_get(name) values end end |
#instance_variable_defined?(variable) ⇒ Boolean
4 5 6 |
# File 'lib/ext/object.rb', line 4 def instance_variable_defined?(variable) instance_variables.include?(variable.to_s) end |