Ruby:在方法链中访问调用者
发布时间:2020-12-17 02:04:18 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个Or helper(基于 Not Method by Jay Fields).我想要实现的是: s = ""s.nil? # falses.empty? # trues.nil? || s.empty? # trues.nil?.or.empty? # should == true 我可以访问nil的结果吗?但不是什么输入到零?是. 我明白了: NoMethodErr
我正在尝试编写一个Or helper(基于
Not Method by Jay Fields).我想要实现的是:
s = "" s.nil? # false s.empty? # true s.nil? || s.empty? # true s.nil?.or.empty? # should == true 我可以访问nil的结果吗?但不是什么输入到零?是. 我明白了: NoMethodError: undefined method `empty?' for false:FalseClass 这甚至可能吗? 注意:这需要是本机ruby而不是rails! 解决方法
你无法做到这一点.
s.nil的返回值?是true还是false,它们分别是TrueClass和FalseClass的唯一实例.您无法创建这两个类的其他实例.所以你不能修补TrueClass或FalseClass以记住上下文s.你可以定义单例方法或者是true和false,但是,它对s一无所知,所以你不能将另一个谓词链为空? def true.or other true end def false.or other other end 您可以使用定义的两个辅助方法编写s.nil?.或(s.empty?). 另一个想法是为所有谓词(blabla?)方法返回一个自定义对象,而不是true或false.然而,在ruby中,只有零和假产生错误,任何其他东西产生真实.您自定义对象的实例将始终为true,这将破坏所有这些谓词方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |