如何在Ruby中传递splat参数

如何在Ruby中传递splat参数,ruby,Ruby,给定一个具有接受splat的方法的类,例如从ActiveRecord::FinderMethods获取的方法: class Settle def self.find(*args) end end 我应该如何从另一个方法(比如说另一个类)调用该方法,使其具有完全相同的签名 class Settler def self.find(*args) Settle.find(*args) end end 或 还是别的什么? 请注意,完全相同的签名是重要的组成部分:Settler.

给定一个具有接受splat的方法的类,例如从
ActiveRecord::FinderMethods
获取的方法:

class Settle
  def self.find(*args)
  end
end
我应该如何从另一个方法(比如说另一个类)调用该方法,使其具有完全相同的签名

class Settler
  def self.find(*args)
    Settle.find(*args)
  end
end

还是别的什么? 请注意,完全相同的签名是重要的组成部分:
Settler.find
的工作方式应与
Settle.find
的工作方式完全相同

但是,我对允许
结算人.find
签名在
结算时神奇地更新的代码不感兴趣。find
更改为完全不同的内容,例如
.find(范围,*args)
。在这种情况下,更新沉淀池中的版本没有问题。

应该是

Settle.find(*args)
这样,传递到
沉降器.find
的所有参数也会传递到
沉降器.find
并存储在其内部的
args
数组中。因此,两个方法中的
args
数组具有相同的值


将参数作为'splat'传递非常简单-它只是将数组作为单独的参数传递。所以如果你有

ar = [arg1, arg2, arg3, ..., argn]
召唤

some_method(*ar)
相当于

some_method(arg1, arg2, arg3, ..., argn)
应该是

Settle.find(*args)
这样,传递到
沉降器.find
的所有参数也会传递到
沉降器.find
并存储在其内部的
args
数组中。因此,两个方法中的
args
数组具有相同的值


将参数作为'splat'传递非常简单-它只是将数组作为单独的参数传递。所以如果你有

ar = [arg1, arg2, arg3, ..., argn]
召唤

some_method(*ar)
相当于

some_method(arg1, arg2, arg3, ..., argn)

不清楚。您想将splat接收到的参数作为单独的参数传递,还是想将一个方法的签名传递给另一个?您对问题的编辑使@sawa变得不清楚。我正在手动还原以回答您的问题。不清楚。您想将splat接收到的参数作为单独的参数传递,还是想将一个方法的签名传递给另一个?您对问题的编辑使@sawa变得不清楚。我正在手动还原它以回答您的问题。在哪里可以找到有关将splat参数传递到方法的更多信息?我熟悉接受splat参数,但不太熟悉如何将它们传递到其他方法中。将参数作为“splat”传递非常简单-它只是将数组作为单独的参数传递。因此,如果您有
ar=[arg1,arg2,arg3,…,argn]
,调用
some\u方法(*ar)
相当于
some\u方法(arg1,arg2,arg3,…,argn)
,那就太完美了!这就是我想要的总结。你能在回答中包括这一点吗?这正是我要寻找的答案。最安全的答案是
*[*args]
,即使args是一个变量,它也能正常工作。我们在哪里可以找到有关将splat参数传递到方法的更多信息?我熟悉接受splat参数,但不太熟悉如何将它们传递到其他方法中。将参数作为“splat”传递非常简单-它只是将数组作为单独的参数传递。因此,如果您有
ar=[arg1,arg2,arg3,…,argn]
,调用
some\u方法(*ar)
相当于
some\u方法(arg1,arg2,arg3,…,argn)
,那就太完美了!这就是我想要的总结。你能在回答中包括这一点吗?这正是我要寻找的答案。最安全的答案是
*[*args]
,即使args是一个变量,它也能正常工作。