Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何检查变量在rails中是否有可用的映射?换句话说,如果一个变量是可映射的?_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 如何检查变量在rails中是否有可用的映射?换句话说,如果一个变量是可映射的?

Ruby on rails 如何检查变量在rails中是否有可用的映射?换句话说,如果一个变量是可映射的?,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我正在尝试处理一个遗留方法,该方法接受一个变量并将变量.amount.to_返回。但是现在经过一些更改,变量也可以是活动记录关系 我基本上希望能够做这样的事情: def方法变量 变量是否有映射? variable.map{| v | v.amount.to_f}.reduce:+ 变量.tos 其他的 可变金额 终止 终止 但我不知道如果情况是这样的话会怎么样 您可以使用直接测试方法 或者您可以检查它是否提供了用于迭代的一大套方法,包括 Enumerable的优点是它告诉您更多关于对象的信息,并

我正在尝试处理一个遗留方法,该方法接受一个变量并将变量.amount.to_返回。但是现在经过一些更改,变量也可以是活动记录关系

我基本上希望能够做这样的事情:

def方法变量 变量是否有映射? variable.map{| v | v.amount.to_f}.reduce:+ 变量.tos 其他的 可变金额 终止 终止
但我不知道如果情况是这样的话会怎么样

您可以使用直接测试方法

或者您可以检查它是否提供了用于迭代的一大套方法,包括


Enumerable的优点是它告诉您更多关于对象的信息,并且您可以更确定它的映射是您期望的映射,而不仅仅是某个碰巧命名为map的方法。缺点是它将错过任何不可枚举但实现了适用映射的内容;我想不出哪种情况会发生这种情况。

您可以使用直接测试方法

或者您可以检查它是否提供了用于迭代的一大套方法,包括

Enumerable的优点是它告诉您更多关于对象的信息,并且您可以更确定它的映射是您期望的映射,而不仅仅是某个碰巧命名为map的方法。缺点是它将错过任何不可枚举但实现了适用映射的内容;我想不出会发生这种情况。

谢谢!变量。是吗?可枚举正是我想要的。谢谢!变量。是吗?可枚举性正是我想要的。
if variable.respond_to?(:map)
if variable.is_a?(Enumerable)