Ruby中是否有一个与find相反的方法?
发布时间:2020-12-16 21:29:04 所属栏目:百科 来源:网络整理
导读:a,b,c = 0,1,2[a,c].find(:zero?) # = 0 是否有任何方法可以找到块返回false的第一个元素? [a,c].the_method(:zero?) # = 1 换句话说,它的行为方式与: [a,c].reject(:zero?).first 解决方法 有 is not,但你可以创建一个干净的方式: a = [0,2,3]module Enu
a,b,c = 0,1,2 [a,c].find(&:zero?) # => 0 是否有任何方法可以找到块返回false的第一个元素? [a,c].the_method(&:zero?) # => 1 换句话说,它的行为方式与: [a,c].reject(&:zero?).first 解决方法
有
is not,但你可以创建一个干净的方式:
a = [0,2,3] module Enumerable def first_not(&block) find{ |x| !block[x] } end end p a.first_not(&:zero?) #=> 2 ……或者是非常有趣的黑客方式: class Proc def ! proc{ |o,*a| !self[o,*a] } end end p a.find(&!(:zero?.to_proc)) #=> 2 ……或者简洁但非常危险的方式: class Symbol def ! proc{ |o,*a| !o.send(self,*a) } end end p a.find(&!:zero?) #=> 2 但我主张只是跳过棘手的Symbol#to_proc用法并说出你想要的东西: p a.find{ |i| !i.zero? } #=> 2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- cocos2d-x 3.9遇到过的坑
- ruby-on-rails – rake db:migrate在通过RVM升级ruby 2.2.
- UML 基本图速查---类图. 对象图. 用例图 .参与者. 依赖关系
- Postgresql 记事
- 如何设计C#/ Java中缺少const?
- ruby-on-rails – 使用范围在ActiveRecord中的多个DateTime
- ruby-on-rails – rails中的迁移将varchar的1个字符转换为b
- actionscript-3 – 如何以干净,易于管理的方式跟踪我的所有
- c – 为什么没有初始化器跳进标量类型对象的范围?
- ruby-on-rails – 不推荐使用arity为1的Rails 3重定向块