3

ルビーでおっとの概念を探ろうとしていたところです

ミックスインを使用した継承

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")

これは私のルビークラスです。明らかに、定義された1秒が実行されますが、これに関するSOからの専門家の理解を探しています

4

2 に答える 2

0
class Box
   def method1(str="")
      puts "in old method 1"
   end
end

デフォルト値を渡す

于 2013-06-14T07:03:40.257 に答える
0

オーバーロードとは、クラスが同じメソッド名を持つ可能性があることを意味し、数値パラメーターまたはパラメーターの型が異なります。参照オーバーロード

これはほとんどのプログラミング言語に当てはまりますがin Ruby overloading doesn't exist、Ruby はパラメーターの型ではなく、パラメーターで呼び出すメソッドに関心があるためです。Refダックタイピング

例:-

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 に答える