浏览 1476 次
锁定老帖子 主题:Ruby中!!的妙用
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-09
最后修改:2009-12-10
!!true和!!false,加上!!似乎有点多余,但是在!!nil时就不同了,返回的结果为false。
# 判断用户是否登录 def logged_in? !!current_login_space end # 取出当前登录用户 def current_login_space @current_space = Space.find(cookies[:space_id]) end
如果用户未登录,则current_login_space返回的值就为nil,如果将这个空值当做fasle赋值给其他变量,则有可能出现莫名其妙的问题,这时候加上!!后,nil就变为了false,避免了可能出现的潜在问题。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-09
jsntghf 写道 def current_login_space @current_space = Space.find(cookies[:space_id]) return @current_space if @current_space end 楼主大大可否讲解一下为什么current_login_space最后要写成这个形式?跟这样写的区别和优点是什么: def current_login_space @current_space = Space.find(cookies[:space_id]) end |
|
返回顶楼 | |
发表时间:2009-12-10
最后修改:2009-12-10
ravenex 写道 jsntghf 写道 def current_login_space @current_space = Space.find(cookies[:space_id]) return @current_space if @current_space end 楼主大大可否讲解一下为什么current_login_space最后要写成这个形式?跟这样写的区别和优点是什么: def current_login_space @current_space = Space.find(cookies[:space_id]) end 后一句完全是画蛇添足, Space.find(cookies[:space_id])这一句要么找到结果返回一个Space实例,要么就抛异常,后面的代码根本不会执行。 还有那个!!也是完全没有必要的。ruby中nil的地位完全高于false,强制返回false不会带来任何好处。除非你的代码里有这样写: if xx==false |
|
返回顶楼 | |
发表时间:2009-12-10
Hooopo 写道 ravenex 写道 jsntghf 写道 def current_login_space @current_space = Space.find(cookies[:space_id]) return @current_space if @current_space end 楼主大大可否讲解一下为什么current_login_space最后要写成这个形式?跟这样写的区别和优点是什么: def current_login_space @current_space = Space.find(cookies[:space_id]) end 后一句完全是画蛇添足, Space.find(cookies[:space_id])这一句要么找到结果返回一个Space实例,要么就抛异常,后面的代码根本不会执行。 还有那个!!也是完全没有必要的。ruby中nil的地位完全高于false,强制返回false不会带来任何好处。除非你的代码里有这样写: if xx==false 照也,越平实越大路才是功夫哈 |
|
返回顶楼 | |