我给了一个哈希self.options
(可能是空的)和一个方法名。现在我需要调用方法,传入选项哈希,如下所示:
obj.send(method_name, ...args..., self.options)
但是我想支持调用根本不期望选项哈希的方法。因此,如果没有给出选项(self.options.empty?
),我想不将空哈希传递给方法。我能想到的最好的是:
obj.send(method_name, ...args..., *(self.options.empty? ? [] : [self.options]))
这有更好的习语吗?
答案 0 :(得分:6)
如果选项为空,则不需要[]。 * nil返回该位置的空白。
这会有用吗?
obj.send(method_name, ...args..., *([self.options] unless self.options.empty?))
顺便说一下,你可以省略自己,所以你可以拥有
obj.send(method_name, ...args..., *([options] unless options.empty?))
答案 1 :(得分:0)
obj.send(method_name, ...args..., *([self.options.presence].compact))
或@sawa如何提及,你可以扔掉self
obj.send(method_name, ...args..., *([options.presence].compact))