gpt4 book ai didi

ruby - self.generate 和 Invoice.generate 有什么区别?

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

class Invoice
def Invoice.generate(order_id, charge_amount, credited_amount = 0.0)
Invoice.new(:order_id => order_id, :amount => charge_amount, :invoice_type => PURCHASE, :credited_amount => credited_amount)
end
end

为什么要在 Invoice 类中创建 Invoice.generate 而不是 self.generate

最佳答案

self.generate 更容易使用,而 Invoice.generate 可以说更明确。除此之外,两者之间没有区别。

解释

您可以使用这种形式在任何实例上定义方法

def receiver.method(args) 
end

检查一下

class Foo
end

def Foo.bar
"bar"
end

Foo.bar # => "bar"

是的,我指的是任何实例。绝对有可能一个实例有某种方法而另一个实例没有

f = Foo.new

def f.quux
'quux'
end

f2 = Foo.new

f.quux # => "quux"
f2.quux # => # ~> -:20:in `<main>': undefined method `quux' for #<Foo:0x007fe4e904a6c0> (NoMethodError)

提醒:在类定义内部(但在方法定义外部)self 指向该类。

class Foo
# self is Foo
end

因此,有了这些知识,self.generateInvoice.generate 之间的区别就很明显了。

关于ruby - self.generate 和 Invoice.generate 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13448154/

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