Class
Class
file:test_class.rb
class Human
def initialize(defname = "Noname")
@name = defname
end
def sayHello
puts("[#{@name}] Hello, My name is #{@name}")
end
def name
@name
end
def name=(newname)
@name = newname
end
end
# クラスHumanをインスタンス化
human = Human.new("Human01")
human.sayHello
human.name = "Armstrong"
human.sayHello
puts("[#{human.name}] I am hungry")
実行例
$ ruby test_class.rb
[Human01] Hello, My name is Human01
[Armstrong] Hello, My name is Armstrong
[Armstrong] I am hungry
accessor
# 他言語put, get, set, get属性との関連性
Rubyでは 以下の定義で簡単に定義可能です
attr_reader :name # Read対応
以下の定義を一行で実装できます。
def name
@name
end
attr_writer :name # Write対応
def name=(newname)
@name = newname
end
attr_accessor :name # Read, Write両対応
Read, Writeの定義を一行で実装できます。