Tag: null object pattern

Ruby类似于nil的对象

如何在ruby中创建一个Object,它将在类似于nil的逻辑表达式中被评估为false? 我的目的是在其他对象上启用嵌套调用,其中链的一半位置通常nil ,但允许所有调用继续 – 返回我的类似nil的对象而不是nil本身。 该对象将返回自己以响应任何收到的消息,它不知道如何处理,我预计我将需要实现一些覆盖方法,如nil? 。 例如: fizz.buzz.foo.bar 如果fizz的buzz属性不可用,我会返回我的类似nil的对象,它会接受调用一直到bar返回自己。 最终,上述陈述应评估为假。 编辑: 根据以下所有优秀答案,我提出了以下建议: class NilClass attr_accessor :forgiving def method_missing(name, *args, &block) return self if @forgiving super end def forgive @forgiving = true yield if block_given? @forgiving = false end end 这允许一些卑鄙的技巧,如: nil.forgiving { hash = {} value = hash[:key].i.dont.care.that.you.dont.exist if value.nil? # great, we found […]