はじめに
今回は以下のhello.rbと同じ動作をするclassを作る
hello.rb
def puts_hello name
puts "Hello #{name}."
end
def gets_name
name = ARGV[0] || 'world'
return name
end
name = gets_name
puts_hello name
クラスを作る
class_Greeter.rb
class Greeter
def initialize
@name = gets_name
puts_hello
end
def puts_hello
puts "Hello #{@name}."
end
def gets_name
name = ARGV[0] || 'world'
return name
end
end
Greeter.new
@nameのように変数の頭に@を付けるとインスタンス変数として扱われる.initializeメソッドはコンストラクタ.
クラスの継承
Stringクラスを継承してGreeter_inheritedクラスを作る.
class_Greeter.rb
class Greeter_inherited < String
def hello
"Hello #{self}."
end
end
greeter_inherited = Greeter_inherited.new(ARGV[0])
puts greeter_inherited.hello.green
メソッドの追加
Stringクラスにhelloメソッドを追加する.
class_Greeter.rb
class String
def hello
"Hello #{self}."
end
end
puts ARGV[0].hello.red
参考文献
- source ~/grad_members_20f/members/ryuta-kikuchi/qiita_articles/lecture11.org