3

我只是想在 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 对此的任何专家理解

4

2 回答 2

0

重载意味着一个类可能具有相同的方法名称,但具有不同的数字参数或不同的参数类型。参考重载

在大多数编程语言中都是这种情况,但是in Ruby overloading doesn't exist由于 ruby​​ 更关心调用参数的方法而不是参数的类型。参考鸭子打字

例如:-

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)

或者

   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)
于 2013-06-14T07:34:15.907 回答
0
class Box
   def method1(str="")
      puts "in old method 1"
   end
end

Pass default value

于 2013-06-14T07:03:40.257 回答