はじめに
今回はinstance_variableに関する内容です。Ruby Goldの試験でinstance_variableに関して自信を持って回答できなかったため、簡単にまとめてみます。
irbで確認してみた
環境はruby 3.1.4です。
こちらによると、オブジェクトのインスタンス変数名をシンボルの配列として返すメソッドらしいです。
実際に、インスタンスを作成し、instance_variablesメソッドを実行
class Book
def initialize(title, author)
@title = title
@author = author
end
end
ruby = Book.new('Ruby', 'taro')
ruby.instance_variables
irb(main):001* class Book
irb(main):002* def initialize(title, author)
irb(main):003* @title = title
irb(main):004* @author = author
irb(main):005* end
irb(main):006> end
=> :initialize
irb(main):007>
irb(main):008> ruby = Book.new('Ruby', 'taro')
irb(main):009> ruby.instance_variables
=> [:@title, :@author]
すると、rubyインスタンスの@title
と@author
をシンボルのハッシュで返されました。
Ruby gold受験される際は、返り値には@が含まれることとシンボルのハッシュの形となることに気を付けていただければと思います...!
おわりに
確認した結果、instance_variablesメソッドはオブジェクトのインスタンス変数名をシンボルの配列として返すメソッドだということが分かりました。instance_variablesメソッド実行時、返り値がどんな形で返ってくるのか曖昧な部分があったので、今回整理できてスッキリしました!誤り等ありましたらご指摘いただけますと助かります!
参考