在Ruby中使用(:send)和关键字参数?
我有一个私有方法,我正试图使用它在Ruby中进行一些测试。这个方法很复杂,我不想暴露在类之外,所以我想测试这个方法,但我也不需要将它列为公共方法。它有关键字参数。如何使用在Ruby中使用(:send)和关键字参数?,ruby,Ruby,我有一个私有方法,我正试图使用它在Ruby中进行一些测试。这个方法很复杂,我不想暴露在类之外,所以我想测试这个方法,但我也不需要将它列为公共方法。它有关键字参数。如何使用send调用该方法,同时传递关键字参数/命名参数?有办法吗 方法如下所示: 定义某些方法(关键字\u arg1:、关键字\u arg2:、关键字\u arg3:nil)取决于关键字args的定义方式 如果它们是以内联方式定义的,无论出于何种原因,请以内联方式传递它们: SomeClass.send(:some_method, {
send
调用该方法,同时传递关键字参数/命名参数?有办法吗
方法如下所示:
定义某些方法(关键字\u arg1:、关键字\u arg2:、关键字\u arg3:nil)
取决于关键字args的定义方式
如果它们是以内联方式定义的,无论出于何种原因,请以内联方式传递它们:
SomeClass.send(:some_method, {keyword_arg1: 'foo', keyword_arg2: 'bar'})
如果它们是在散列中定义的,则可以将其解包:
hash = {keyword_arg1: 'baz', keyword_arg2: 'bing'}
SomeClass.send(:some_method, **hash)
注意,在Ruby 3.0中,必须使用double-splat操作符
obj.send(:some_方法,***{arg1:'foo',arg2:'bar'})