Ruby中的Javascript风格`apply`?

Pat*_*ell 15 ruby

对于Ruby中的方法,是否有类似于javascript的东西apply?

也就是说,如果某些方法被定义为采用一些参数,比方说,some_method(a, b, c)我有三个项目的数组,我可以打电话some_method.apply(the_context, my_array_of_three_items)吗?


编辑:(以澄清一些混乱):我不太关心电话的上下文,我只是想避免这种情况:

my_params = [1, 2, 3]
some_method(my_params[0], my_params[1], my_params[2])
Run Code Online (Sandbox Code Playgroud)

相反,我很想知道是否有这样的事情

my_params = [1, 2, 3]
some_method.apply(my_params)
Run Code Online (Sandbox Code Playgroud)

sam*_*uil 16

存在与javascript上下文最接近的绑定,并且存在未绑定的方法,这些方法可以稍后绑定到要在其范围内调用的对象.

必须提前捕获绑定,并且它们允许在其上下文中从字符串中评估代码.

使用方法提取器从任何对象捕获的解除绑定方法允许您稍后将其绑定到对象(请注意,它必须共享足够的接口以使方法起作用)并在其范围内调用它.

除非你想在Ruby中破解一些非常低级的东西,否则我不鼓励使用上述两者来支持面向对象的解决方案.


编辑:

如果你只是想调用方法,而它的参数包含在数组中使用splat运算符:

a = [1, 2, 3]
method(*a)
Run Code Online (Sandbox Code Playgroud)