我是 Ruby 新手,目前正在尝试使用 Ruby 书中的一些示例作为指导:
class Account
attr_accessor :balance
def initialize(balance)
@balance = balance
end
end
class Transaction
def initialize(account_a, account_b)
@account_a = account_a
@account_b = account_b
end
def debit(account,amount)
account.balance -= amount
end
def credit(account,amount)
account.balance += amount
end
def transfer(amount)
debit(@account_a, amount)
credit(@account_b, amount)
end
end
savings = Account.new(100)
checking = Account.new(200)
trans = Transaction.new(checking, savings)
trans.transfer(60)
puts savings.balance
puts checking.balance
这是一个非常简单的示例,在同一脚本文件中包含两个类。我对传递给贷方和借方方法的论点类型感到困惑。来自Java,我仍然关注类型,所以显然我要传递的帐户变量的类型(例如借记方法)必须是帐户类型。
由于 ruby 是动态类型的并且不检查类型,因此我如何安全地操作我传递的参数,并通过说: account.balance -+ amount 来定义方法的其余部分?
我想了解,如果我将对帐户以外的对象的引用传递给借记方法,会有什么样的安全性?
当定义下面的方法主体时,它使用给定的参数 account。现在,我想我在重复自己,因为我仍然无法理解这个想法......我该如何接受这个论点account(可以是任何类型,因为没有人检查)并通过使用点运算符构建一些逻辑,请求其实例变量,或调用其其他方法,并对可能或可能不会的对象执行计算是,正确的种类(或类型)?当然,隐含地,我希望它是 Account 类型。
def credit(account,amount)
account.balance += amount
end
另外,如果我在不同的文件中声明这两个类,同一示例将如何工作?
提前对新手问题表示诚挚的歉意,我只是发现很难将我的注意力集中在动态类型上——或者更好的是,没有类型检查。这本书要么在这方面有点含糊,要么我无法通过只用java思考来摆脱我的狭隘视野。
任何实际的解释将不胜感激。