ruby-on-rails 在ruby中参数后面的冒号是什么意思?

llew8vvj  于 2023-01-22  发布在  Ruby
关注(0)|答案(1)|浏览(182)

我正在努力理解下面的代码。initialize方法中参数后面的冒号是什么意思?account:etc.我知道在变量名前有冒号意味着它是一个符号,不能像变量那样改变它的值。但是在变量名后有冒号意味着什么呢?谢谢

class Purchaser
  attr_accessor :consumable, :account, :amount, :reason
  def initialize(consumable:, account:, amount:, reason:)
    @consumable = consumable
    @account = account
    @amount = amount
    @reason = reason
  end

  def make_purchase
    if purchase.update(account: account, amount: amount, reason: reason) && decrease_stock
      return true
    else
      return false
  end
r1zhe5dt

r1zhe5dt1#

当调用该函数/构造函数时,您不需要遵循顺序,您可以通过提及variable关键字来更改顺序。因此,我们可以避免混淆,而不是盲目地记住参数顺序。
例如。

#This will work
Purchaser.new(consumable:"yes", account:"Normal", amount:"10", reason:"Credit")

#this will also work
Purchaser.new(account:"Normal", amount:"10", reason:"Credit",consumable:"yes")

有关详细信息,请参阅使用关键字参数提高清晰度https://www.rubyguides.com/2018/06/rubys-method-arguments/部分

相关问题