又一个try方法的实现

xiaoxiao2024-04-17  31

有几篇讨论try的元编程参考 http://www.iteye.com/topic/169001 http://www.iteye.com/topic/351546 这里也提供一个gem,可以以比较简洁的方式实现,如try.a.b.c即可 gem install trydefault 测试例子如下(需要写在rb文件里测试,irb里面不行) require ’try_default/default‘def xxx "yes" endp try.xxx == 'yes'p (try.xxx.default "no") == 'yes'p try.xxx.yyy.zzz.nil? == true#不过暂时还实现不了try.xxx.yyy.zzz || "no"的效果,尽管支持nil?#p (try.xxx.yyy.zzz || "no") == 'no' will fails, because try.xxx.yyy.zzz is a proxy objectp (try.xxx.yyy.zzz.default "no") == 'no'#try后面不是方法而是是变量则要改成#for variable@xxx = "yes"p try(@xxx) == 'yes'p (try(@xxx).default "no") == 'yes'p try(@xxx).yyy.zzz.nil? == truep (try(@xxx).yyy.zzz.default "no") == 'no'p @xxx.try.yyy.zzz.nil? == truep "#{try.xxx}" == 'yes'p "#{try.xxx.yyy.zzz}" == ''#对于有些场合需要确保xxx.yyy有值的,还可以这样#That will throw undefined method error for makr sure yyy not nil#p xxx.yyy.try.zzz
转载请注明原文地址: https://www.6miu.com/read-5015048.html

最新回复(0)