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重定向块
 
