Rubyのアクセッサ相当を書いてみる
instance_variable_get, _setがインスタンス変数を文字列として取れる
という点がポイントか
1 #!/usr/bin/env ruby
2 # encoding: utf-8
3 class Creature
4 def self.atta(*arg)
5 arg.each do |arg|
6 define_method(arg) do
7 instance_variable_get("@#{arg}")
8 end
9 define_method("#{arg}=") do |val|
10 instance_variable_set("@#{arg}", val)
11 end
12 end
13 end
14
15 end
16
17 class Dragon < Creature
18 atta :life
19 end
20 d = Dragon.new
21 d.life = 20
22 d.life # => 20
23
No comments:
Post a Comment