「プロを目指す人のためのRuby入門」を読んでおり、改札機プログラムを作成する際に、GateクラスとTicketクラスを作成しております。その間でのインスタンス変数(@stamped_at)の受け渡しについて、教えていただけますでしょうか。
ticket = Ticket.new(梅田)
で、インスタンスを作成し、
stampメソッドを呼び出した際に、
@stamped_at = 梅田
となります。
この変数をGateクラスのcalc_fareメソッドの引数とする際に、
ticket.stamped_at
と書かれておりますが、メソッドを呼び出す際に、
「ticket.変数名」 → 「ticket.@stamp_at」
ではないのかなと思っていたのですが、
なぜ、上記のような書き方になるのでしょうか。
初歩的な質問で恐れ入りますが、ご教授いただけますでしょうか。
<該当コード>
・Ticketクラス
class Ticket attr_reader :fare, :stamped_at def initialize(fare) @fare = fare end def stamp(name) @stamped_at = name ←ここで定義した@stamped_at end end
・Gateクラス
class Gate STATIONS =[:umeda, :juso, :mikuni] FARES =[150,190] def exit(ticket) fare = calc_fare(ticket) fare <= ticket.fare end def calc_fare(ticket) from = STATIONS.index(ticket.stamped_at) ←ここだと、stamped_at to = STATIONS.index(@name) distance = to - from FARES[distance - 1] end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/19 09:33
2020/03/20 00:27
2020/03/20 04:49