我刚学Ruby没有几天,有个问题想请教一下高手:有学习资料说Ruby里没有方法的重载这一说法。不过我现在遇到这个需要像在java里写多个构造器的情况下该怎么实现。
class Abc
#1
def initialize()
end
#2
def initialize(name, &block)
@name = name
@block = block
end
def getText
"this is test"
end
def getTax(amount)
"#@name on #{amount} = #{ @block.call(amount) }"
end
end
#3
method1 = Abc.new()
method1.getText
#4
method2 = Abc.new("Sales tax") { |amt| amt * 0.075 }
puts method2.getTax(100)
为什么代码块#1和#2同时存在时,#3可以执行,#4就不可以,只存在#2和#4时,#4就可以执行,要在同一个类中实现像java那样的通过不同的构造器构造不同的实例,在Ruby里应该怎么实现,请各位大侠给的答案!!
本文探讨了Ruby语言中如何实现类似Java中的构造器重载功能,通过具体示例展示了如何使用默认参数和代码块来模拟不同形式的初始化方法。
270

被折叠的 条评论
为什么被折叠?



