浏览 2655 次
锁定老帖子 主题:又一个try方法的实现
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-24
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" end p 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 object p (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? == true p (try(@xxx).yyy.zzz.default "no") == 'no' p @xxx.try.yyy.zzz.nil? == true p "#{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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-25
rails 2.3里面已经有了
Model.new.try("attr") |
|
返回顶楼 | |
发表时间:2009-03-30
不是流氓 写道 rails 2.3里面已经有了
Model.new.try("attr") 你没仔细看吧 |
|
返回顶楼 | |
发表时间:2009-03-30
lllyq 写道 不是流氓 写道 rails 2.3里面已经有了
Model.new.try("attr") 你没仔细看吧 sorry |
|
返回顶楼 | |
发表时间:2009-04-01
这样的用法和
a.b.c rescue 0 或者 a.b.c rescue 'yes' 这样有明显的不同吗,感觉不出来啊,何必另外在加载一个gem? |
|
返回顶楼 | |
发表时间:2009-04-01
jack 写道 这样的用法和
a.b.c rescue 0 或者 a.b.c rescue 'yes' 这样有明显的不同吗,感觉不出来啊,何必另外在加载一个gem? 没什么明显不同,就是语意有点差别,非要说不同就是在erb里面可以写得少打几个字 |
|
返回顶楼 | |