我可以访问被调用的ruby Proc的未捕获参数吗?
Ruby Procs与JavaScript函数非常相似。在Javascript中,我可以arguments[someIndex]
。这是红宝石版吗?
my_proc = Proc.new { |a| p a } #This captures the first argument but not the second
my_proc.call(42,43)
#Can I still access the second argument without capturing it (|a,b|) (with something some kind of a ruby equivalent to `arguments[1]` or doing anything within the pipes)?
(我为什么这么问:我已经为strace
写了一个基于sh
的依赖关系跟踪rake
替换,如果我要在{{1}中使用它任务,它需要知道将所发现的依赖项分配给哪个任务。换句话说,它需要访问调用它的任务块的第一个参数,但我不希望它依赖于第一个参数。争论总是以特定方式被捕获。)
答案 0 :(得分:1)
Ruby没有Javascripts arguments
访问器的等价物。正如@mudasobwa所指出的那样,你必须使用splat运算符才能"浸泡"如果您希望稍后访问它们,请填写所有剩余的参数:
my_proc = Proc.new { |expected_arg1, expected_arg2, *rest| p expected_arg1 }
使用关键字参数时使用双重展示:
my_proc = Proc.new { |expected_arg1:, **rest| p expected_arg1 }