当前位置:  开发笔记 > 编程语言 > 正文

如何将单个对象转换为ruby中的Enumerable

如何解决《如何将单个对象转换为ruby中的Enumerable》经验,为你挑选了2个好方法。

我有一个方法可以返回单个对象或对象集合.我希望能够在该方法的结果上运行object.collect,无论它是否是单个对象或集合.我怎样才能做到这一点?

profiles = ProfileResource.search(params)
output = profiles.collect do | profile |
    profile.to_hash
end

如果配置文件是单个对象,当我尝试在该对象上执行collect时,我会收到NoMethodError异常.



1> Mike Tunnicl..:

小心使用展平方法,如果search()返回嵌套数组,则可能会导致意外行为.

profiles = ProfileResource.search(params)
profiles = [profiles] if !profiles.respond_to?(:collect)
output = profiles.collect do |profile|
    profile.to_hash
end



2> 小智..:

这是一个班轮:

[*ProfileResource.search(params)].collect { |profile| profile.to_hash }

诀窍是splat(*)将单个元素和枚举变为参数列表(在本例中为新数组运算符)

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有