如何忽略ruby

时间:2016-02-10 19:32:39

标签: ruby

我正在编写一个脚本,它将几个参数传递给一组pg查询。其中一些查询采用2个日期参数,有些只采用1.我想知道查询是否有办法忽略传递给它的任何“额外”日期参数。

E.g。此命令针对DailyQueries中的每个查询运行:

DailyQueries.send(query_name, conn, date_1, date_2)

我有一些结构如下的查询:

DailyQueries.tot_students(conn, date)

而其他人则为:

DailyQueries.fact_practice_tot_sessions(conn, start_date, end_date)

理想情况下,即使传递了2个日期参数,前者仍会运行。现在我收到此错误:

wrong number of arguments (3 for 2) (ArgumentError)

1 个答案:

答案 0 :(得分:1)

def zoo(*args)
  puts args.inspect
end

你可以根据你的期望来检查args的数量并接受或拒绝来电。

irb(main):001:0> def zoo(*args)
irb(main):002:1> puts args.inspect
irb(main):003:1> end
=> nil
irb(main):004:0> zoo
[]
=> nil
irb(main):005:0> zoo 1
[1]
=> nil
irb(main):006:0> zoo 1,2,3,4,5
[1, 2, 3, 4, 5]

另请看一下: http://ruby-doc.org/core-2.2.0/Method.html#method-i-arityhttp://ruby-doc.org/core-2.2.0/Method.html#method-i-curry

如果你不直接控制代码:你可以编写一个包装,检查arrity并发送正确数量的args,或者如果你感到幸运,你可以尝试将方法修改为支持这种行为。

相关问题