Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Object | instance_variable_set

概要

Object#instance_variable_set(var, value) -> object

詳細

オブジェクトのインスタンス変数に var を設定。

サンプルコード
require 'tbpgr_utils'

class Person
  attr_reader :name, :age
  def initialize(options = {name: nil, age: nil} )
    @name = options[:name]
    @age = options[:age]
  end
end

unknown = Person.new

bulk_puts_eval binding, <<-EOS
unknown.instance_variable_set('@name', 'tanaka')
unknown.instance_variable_set('@age', 24)
unknown.instance_variable_set('@power', 35)
unknown.instance_variable_get('@name')
unknown.instance_variable_get('@age')
unknown.instance_variable_get('@power')
unknown
EOS

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils

出力

$ ruby object_instance_variable_set.rb
unknown.instance_variable_set('@name', 'tanaka') # => "tanaka"
unknown.instance_variable_set('@age', 24)        # => 24
unknown.instance_variable_set('@power', 35)      # => 35
unknown.instance_variable_get('@name')           # => "tanaka"
unknown.instance_variable_get('@age')            # => 24
unknown.instance_variable_get('@power')          # => 35
unknown                                          # =>          #<Person:0x00000600b27c70 @name="tanaka", @age=24, @power=35>