我刚刚开始使用Ruby并且有一个初学者问题。为什么pin_number == @pin
(在display_balance
和withdraw
方法中)出现错误,但是当我编辑设置pin_number == pin
时,两种方法都有效?
在下面的方法中,我设置了private
类pin
设置@pin = 1234
,因此我认为应该使用@pin
而不是pin
。
class Account
attr_reader :name, :balance
def initialize(name, balance=100)
@name = name
@balance = balance
end
def display_balance(pin_number)
if pin_number == @pin
puts "Balance: $#{@balance}"
else
pin_error
end
end
def withdraw(pin_number, amount)
if pin_number == @pin
@balance -= amount
puts "Withdrew #{amount}. New balance #{amount}."
else
pin_error
end
end
private
def pin
@pin = 1234
end
def pin_error
return "Access denied: incorrect PIN."
end
end
checking_account = Account.new("Rick", 1_000_000)
checking_account.display_balance(1234)
答案 0 :(得分:2)
在方法之下,我有私有类引脚设置@pin = 1234,所以我认为应该使用@pin而不是pin。
没有; pin
调用该方法,该方法设置@pin = 1234
并返回其值。
引用@pin
只引用该变量,仅此而已;它不会调用私有pin
方法。
我相信这应该回答你的其他问题。