class HaveInstanceVal
def initialize
@foo = 1
@bar = 2
end
end
have_instance_val = HaveInstanceVal.new
have_instance_val.instance_variables
[:@foo, :@bar]
have_instance_val.instance_variables.any? do |n|
n =~ /fo/
end
true
have_instance_val.instance_variables.select do |n|
n =~ /fo/
end
[:@foo]
p have_instance_val.instance_variable_defined? :@foo
p have_instance_val.instance_variable_defined? :@buzz
have_instance_val.instance_variable_defined? :foo
true false
NameError: `foo' is not allowed as an instance variable name <main>:2:in `instance_variable_defined?' <main>:2:in `<main>' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:12:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:87:in `execute_request' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:47:in `dispatch' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:37:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:70:in `run_kernel' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:34:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/bin/iruby:5:in `<top (required)>' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `load' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `<main>'
p have_instance_val.instance_variable_get :@foo
p have_instance_val.instance_variable_get :@buzz
have_instance_val.instance_variable_get :foo
1 nil
NameError: `foo' is not allowed as an instance variable name <main>:2:in `instance_variable_get' <main>:2:in `<main>' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:12:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:87:in `execute_request' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:47:in `dispatch' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:37:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:70:in `run_kernel' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:34:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/bin/iruby:5:in `<top (required)>' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `load' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `<main>'
have_instance_val.instance_variable_get "@foo"
1
"@foo".to_sym
:@foo
p have_instance_val.instance_variable_get :@foo
p have_instance_val.instance_variable_set :@foo, 2
have_instance_val.instance_variable_get :@foo
1 2
2
p have_instance_val.instance_variable_get :@buzz
p have_instance_val.instance_variable_set :@buzz, 3
have_instance_val.instance_variable_get :@buzz
nil 3
3
#p have_instance_val.instance_variable_get :foo
p have_instance_val.instance_variable_set :foo, 3
have_instance_val.instance_variable_get :foo
NameError: `foo' is not allowed as an instance variable name <main>:1:in `instance_variable_set' <main>:1:in `<main>' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:44:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:12:in `eval' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:87:in `execute_request' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:47:in `dispatch' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:37:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:70:in `run_kernel' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:34:in `run' /Users/ariga/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/bin/iruby:5:in `<top (required)>' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `load' /Users/ariga/.rbenv/versions/2.5.1/bin/iruby:23:in `<main>'
次回「10-1-2 オブジェクトが持つメソッドを調べる」から