4.クラスの中でメソッドを定義する
- まずは定義から
class Player
attr_accessor :name
attr_accessor :number
attr_accessor :position
attr_accessor :throw_hand
attr_accessor :hitting_hand
def show
puts "広島東洋カープの選手です"
end
end
- クラスの中で定義したメソッドを呼び出す
class Player
attr_accessor :name
attr_accessor :number
attr_accessor :position
attr_accessor :throw_hand
attr_accessor :hitting_hand
def show
puts "広島東洋カープの選手です"
end
end
#クラスの中で定義しインスタンスに対して呼び出すメソッドのことをインスタンスメソッドと呼ぶ
player2.show
- インスタンスメソッドを使って引数を受け取る/戻り値を返す
class Player
attr_accessor :name
attr_accessor :number
attr_accessor :position
attr_accessor :throw_hand
attr_accessor :hitting_hand
#引数 player_data を渡し、
def show(player_data)
#戻り値 "#{player_data}です" を返す
return "#{player_data}です"
end
end
player1 = Player.new
puts player.show("広島東洋カープの選手")
- 次。 インスタンスメソッドの中で「self.変数名」を用い、インスタンス変数を扱う
・・・段々わからなくなってきたぞ?ちょっと確認しよう
【インスタンスメソッドとは】
クラスの中で定義し、インスタンスに対して呼び出すメソッドのこと。
今回の例でいうと、Playerクラスの中でshowを定義した。そこでplayer_dataという引数を渡し、戻り値を返すことができるというもの。
【インスタンス変数とは】
インスタンスに情報を持たすために、生成したインスタンスを変数に代入したもの。
player2 = Player.new
のplayer2がインスタンス変数で、
player2.name ='Ryosuke Kikuchi'
player2.number = 33
みたいに使ってきたでしょ?
この前提のもと。
self.変数名を使うことで、変数selfに呼び出したインスタンス自身が代入されているということみたい。
・・・まあちょっとみてみよう。
class Player
attr_accessor :name
attr_accessor :number
attr_accessor :position
attr_accessor :throw_hand
attr_accessor :hitting_hand
#showメソッドを定義する
def show
#showメソッドの中身は、"どうも◯◯です"と表示することみたい
puts "どうも、#{self.name}です"
end
end
#クラスPlayerにインスタンスplayer1を生成
player1 = Player.new
#インスタンスplayer1のname情報は"Kosuke Tanaka"
player1.name = "Kosuke Tanaka"
#player1に対しshowメソッドを呼び出す
player1.show
実行結果
どうも、Kosuke Tanakaです
- これで何ができるかというと、showメソッドを呼び起こすことでインスタンスplayer1の名前を出力できた(こちらが何かを選択することで答えを返してくれた)わけですね
例えば、
class Player
attr_accessor :name
attr_accessor :number
attr_accessor :position
attr_accessor :throw_hand
attr_accessor :hitting_hand
def show_data
puts "どうも、#{self.name}です"
puts "背番号っすか? #{self.number}っすよ"
puts "あ、#{self.position}守ってまあす"
end
end
player1 = Player.new
player2 = Player.new
player3 = Player.new
player4 = Player.new
player1.name = 'Kosuke Tanaka'
player1.number = 2
player1.position = 'short stop'
player1.throw_hand = 'right'
player1.hitting_hand = 'left'
player2.name = 'Ryosuke Kikuchi'
player2.number = 33
player2.position = 'second'
player2.throw_hand = 'right'
player2.hitting_hand = 'right'
player3.name = 'Yoshihiro Maru'
player3.number = 9
player3.position = 'center fielder'
player3.throw_hand = 'right'
player3.hitting_hand = 'left'
player4.name = 'Seiya Suzuki'
player4.number = 51
player4.position = 'right fielder'
player4.throw_hand = 'right'
player4.hitting_hand = 'right'
#インスタンスplayer4に対してクラスPlayerのメソッドshow_dataを呼び出し
player4.show_data
実行結果
どうも、Seiya Suzukiです
背番号っすか? 51っすよ
あ、right fielder守ってまあす
こんな少しおバカな遊びができると。