2014-03-02 28 views
2

假設有一個方法名爲foo,它接受可變長度參數。如何包裝一個需要可變長度參數的方法?

def foo(*args) 
    # Implementation omitted 
end 

而且我想用bar來包裝該方法。

def bar(*args) 
# Will call `foo` at some point 
# `foo(args)` isn't satisfactory. 
end 

我怎麼叫foobar這樣,如果我叫barbar(1,2,3)foo(1,2,3)也叫?

一些約束:

  1. 我無法改變的代碼foo
  2. foobar應該有完全相同的簽名。

當然我可以在bar以內做foo(args)。但是,如果是這樣的話,對於foo,它將收到的是一個數組Array,而不是Array。

謝謝。

+2

您使用splat運算符:'foo(* args)'' – Blender

回答

2

使用splat操作符(*)作爲Blender註釋:它將數組轉換爲參數。

def bar(*args) 
    foo(*args) 
end 
相關問題