我有一个服务类,有助于消毒来自JSON有效负载的数据。红宝石发送使用splat不按预期方式工作
attr_reader :data, :method, :args
def self.call(*args)
new(*args).call
end
def initialize(data, sanitization_method, *method_args)
@data = data
@method = sanitization_method
@args = *method_args
end
def call
data.send(method, args)
end
问题是,当我调用类的方法,它返回一个枚举:
PaidGigs::Services::SanitizeData.call("shd234", :gsub, /[^0-9]/, "")
=> #<Enumerator: "shd234":gsub([/[^0-9]/, ""])>
不是评估方法和返回的:
=> "234"
在我身边玩控制台,这是因为splat数组没有被转换为单独的参数,这与Ruby文档建议的相反。 有没有人有过Object#发送这个问题?任何帮助非常感谢!
非常好!谢谢。假设调用splat实际上会做一些事情来分解数组? – Jay 2014-11-03 18:13:53
我会说splat将一个参数列表转换为一个数组或一个数组到一个参数列表中。 – ThomasSevestre 2014-11-03 18:22:47