Method: Kernel#assign
- Defined in:
- lib/core/facets/kernel/assign.rb
#assign(data = nil, value = NA) ⇒ Object
Assign via writer using arguments, hash or associative array.
Using name-value arguments:
object = Object.new
object.assign(:a, 1)
object.assign(:b, 2)
Using a hash:
object.assign(:a => 1, :b => 2)
Use an associative array:
object.assign([[:a, 1], [:b, 2]])
These are all equivalent to:
object.a = 1 if object.respond_to?(:a=)
object.b = 2 if object.respond_to?(:b=)
Using an associative array instead of a hash guarantees order of assignment for older versions of Ruby (< 1.8.7).
TODO: Should this be called #set instead? Consider Module#set in this question, and also #set_from as the alias of #assign_from.
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/core/facets/kernel/assign.rb', line 33 def assign(data=nil, value=NA) return self unless data if value==NA data.each do |(k,v)| __send__("#{k}=", v) if respond_to?("#{k}=") end else __send__("#{data}=", value) if respond_to?("#{data}=") end self end |