我只是想在ruby中探索oops概念
使用mixins继承
重载(不完全是)var arg传递
我只是想在OOPS术语中称之为
class Box
def method1(str)
puts "in old method 1"
end
def method1(str)
puts "in new method 1"
end
end
# create an object
box = Box.new
box.method1("asd")
这是我的ruby类,显然是第二个被定义的执行, 但我正在寻找SO的任何专家理解
答案 0 :(得分:0)
class Box
def method1(str="")
puts "in old method 1"
end
end
传递默认值
答案 1 :(得分:0)
重载意味着类可以具有相同的方法名称,具有不同的数字参数或不同的参数类型。参考overloading
大多数编程语言都是这种情况,但in Ruby overloading doesn't exist
因为ruby更关心调用参数而不是参数类型的方法。参考Duck Typing
代表: -
def add(a, b)
a + b
end
# Above method will work for the each of the following
# add(2, 3)
# add("string1", "string2")
# add([1,2,3], [4,5,6])
所以,我们必须想知道如何在Ruby中实现重载,并且回答是
def some_method(param1, param2 = nil)
#Some code here
end
# We can call above method as
# 1. some_method(1)
# 2. some_method(1, 2)
OR
def some_method(param1, param2 = nil, param3 = nil)
#Some code here
end
# We can call above method as
# 1. some_method(1)
# 2. some_method(1, 2)
# 3. some_method(1, 2, 3)