【发布时间】:2015-04-10 14:18:43
【问题描述】:
我可以访问调用的 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,如果我要在Rake 任务中使用它,它需要知道将发现的依赖项分配给哪个任务。换句话说,它需要访问调用它的任务块的第一个参数,但我不希望它依赖于总是以特定方式捕获的第一个参数.)
【问题讨论】:
-
不清楚你在问什么。
-
我已经编辑了这个问题,希望让它更清楚一点。
-
my_proc = Proc.new { |*a| p a }splat 完全符合您的要求。 -
@mudasobwa 不同之处在于您必须提前将其包含在您的方法签名中。如果你不这样做,那么事后就没有办法(我知道)访问其他参数。
-
@mudasobwa 问题是您是否可以访问未捕获的参数。答案是否,但您可以使用 splat 来确保没有未捕获的参数 :)
标签: ruby