gpt4 book ai didi

ruby - bool 值未设置为实例变量时方法运行的原因是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:21 24 4
gpt4 key购买 nike

我刚开始使用 Ruby,有一个初学者问题。为什么当 pin_number == @pin (在 display_balancewithdraw 方法中)时,我得到一个错误,但是当我编辑到设置pin_number == pin,这两种方法都可以吗?

在下面的方法中,我有 privatepin 设置 @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)

最佳答案

Below the methods, I have the private class pin setting @pin = 1234, so I thought that should have worked using @pin and not pin.

没有; pin 调用该方法,该方法设置 @pin = 1234 并返回其值。

引用 @pin 只是引用那个变量,仅此而已;它不调用私有(private) pin 方法。

我相信这应该可以回答您的其他问题。

关于ruby - bool 值未设置为实例变量时方法运行的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com