首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arr&.empty - !arr&.any?= Rails?

arr&.empty - !arr&.any?= Rails?
EN

Stack Overflow用户
提问于 2019-12-30 15:37:58
回答 4查看 213关注 0票数 0

在Rails中,我想检查数组是否为空(arr= [])。

代码语言:javascript
复制
!arr&.any? 
arr&.empty?

哪一个更正确?

EN

回答 4

Stack Overflow用户

发布于 2019-12-30 15:41:49

看看下面的Ruby:

代码语言:javascript
复制
[1, 2].any? => true
[nil, false].any? => false
[nil, nil].any? => false

[1, 2].empty? => false
[nil, nil].empty? => false

Enumerable#any?是一个询问“这个集合中是否有什么是真的?”的方法。在Ruby语言中,对象的存在被认为是真的;所以调用不带块的#any?就是在说这个集合中是否存在非空或非假的东西?

有关更多信息,请参阅"any? != ! empty?

票数 7
EN

Stack Overflow用户

发布于 2019-12-30 15:56:45

在Ruby on Rails中,我会使用blank?。从文档中:

如果对象为false、空或空白字符串,则该对象为空。例如,nil、'‘、’‘、[]、{}和false都为空。

代码语言:javascript
复制
array = []
array.blank? 
#=> true

请注意,blank?只能在Ruby on Rails中工作,而不能在普通Ruby中工作,而且它的行为与empty?略有不同。请查看此comparision,了解您可能从不同方法中获得的响应或错误。

票数 3
EN

Stack Overflow用户

发布于 2019-12-30 15:59:57

如果您想检查arr是否不包含元素,那么arr.empty?是正确的。

如果您还想接受nilfalse为空,那么!arr || arr.empty?是正确的。在Ruby on Rails中,您可以使用arr.blank?

arr&.empty?做的与您想要的相反。如果希望nil的结果为true,则nil&.empty?为false。如果arrnil,则安全导航运算符&.将返回nilRubocop将通过Lint/SafeNavigationWithEmpty捕捉到这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59527277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档