如何检查一个变量在 rails 中是否有可用的地图?换句话说,如果变量是可映射的?
How to check if a variable has a map available in rails? In other words, if a variable is mappable?
我正在尝试处理接受变量和 returns variable.amount.to_s
的遗留方法。但是现在有了一些变化,变量也可以是活动记录关系。
我基本上希望能够做这样的事情:
def method(variable)
if variable has map?
variable.map { |v| v.amount.to_f }.reduce(:+)
variable.to_s
else
variable.amount.to_s
end
end
但我无法弄清楚 if
条件应该是什么?
您可以直接用respond_to?
测试该方法。
if variable.respond_to?(:map)
或者您可以检查它是 Enumerable which provides a large suite of methods used for iteration, including map
。
if variable.is_a?(Enumerable)
Enumerable 的优点是它告诉你更多关于对象的信息,你可以更确定它的 map
是你期望的映射,而不仅仅是一些恰好被命名为 [=13= 的方法].缺点是它会遗漏任何不是 Enumerable
但确实实现了适用的 map
的东西;我想不出应该发生的情况。
我正在尝试处理接受变量和 returns variable.amount.to_s
的遗留方法。但是现在有了一些变化,变量也可以是活动记录关系。
我基本上希望能够做这样的事情:
def method(variable)
if variable has map?
variable.map { |v| v.amount.to_f }.reduce(:+)
variable.to_s
else
variable.amount.to_s
end
end
但我无法弄清楚 if
条件应该是什么?
您可以直接用respond_to?
测试该方法。
if variable.respond_to?(:map)
或者您可以检查它是 Enumerable which provides a large suite of methods used for iteration, including map
。
if variable.is_a?(Enumerable)
Enumerable 的优点是它告诉你更多关于对象的信息,你可以更确定它的 map
是你期望的映射,而不仅仅是一些恰好被命名为 [=13= 的方法].缺点是它会遗漏任何不是 Enumerable
但确实实现了适用的 map
的东西;我想不出应该发生的情况。