当前位置:首页 > 开发 > 编程语言 > Ruby > 正文

ruby的“或等于”操作符

发表于: 2013-07-30   作者:hotsunshine   来源:转载   浏览次数:
摘要: google或者baidu ruby的“或等于”赋值运算符的时候,经常会看到这样的说明 比如下面这个很典型 http://gcxieblog.blog.163.com/blog/static/5683783920091711639887/ 引用 问题:如果你想为一个变量赋值,当且仅当它是空值nil的时候(如果不是nil,则不改变它原来的数值),你该怎么操作? 我的想法:
google或者baidu ruby的“或等于”赋值运算符的时候,经常会看到这样的说明

比如下面这个很典型
http://gcxieblog.blog.163.com/blog/static/5683783920091711639887/
引用
问题:如果你想为一个变量赋值,当且仅当它是空值nil的时候(如果不是nil,则不改变它原来的数值),你该怎么操作?

我的想法:使用 (||=)
如下:
@test||=0  (当@test是空值时赋值为0)


那么这种说法对吗?

# 当a变量不是空值的时候
2.0.0-p195 :004 > a = 3
 => 3 
2.0.0-p195 :005 > a ||= 5
 => 3 
2.0.0-p195 :006 > a
 => 3 
# 当a 是空值的时候
2.0.0-p195 :007 > a = nil
 => nil 
2.0.0-p195 :008 > a ||= 5
 => 5 
2.0.0-p195 :009 > a
 => 5 


从上面的例子来看确实是没问题
但是再看下面:
2.0.0-p195 :001 > a = false;
2.0.0-p195 :002 >   a ||= true
 => true 
2.0.0-p195 :003 > a
 => true 


这个时候a是false不是nil空值啊,但是为什么 ||= 运算符会把这个true值赋给a呢?
因为 ||= 仅仅是一种“ 或操作并且赋值”的简写:
x = x || y  
# 等价于  
x ||= y

ruby的“或等于”操作符

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1 Ruby
Ruby Ruby on rails初体验(二) 摘要: 体验一中添加了一个最基本的支架和一个简单的数据迁移,实现了
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgI
javaScript比较有两组相等比较符号 : == & != === & !=== 下面的 == 比较时的一些特别的地方: cons
这里举出一个Java编程程序员经常碰到的问题。例如现在是凌晨3点,在你喝完第4杯咖啡后,你设法找到
在很多人看来,开源就是免费。那开源真的就是等于免费么? 开源软件往往就跟随着开源协议,使用开源
xml中某些特殊字符被解析的时候会出错 如: <img src="http://img.it610.com/image/product/61690
来源:极思维 移动互联网时代,企业的移动化需求越来越迫切。移动应用呈现出爆发式增长,根据维基百
http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter2/24_Advanced_Ope
网上有些地方说有关非的操作符不能利用索引,这些操作符有 != 、 <> 、 !< 、 !> 、 NO
重载不能改变操作符的优先级 如果一个内建操作符是一元的,那么所有对它的重载仍是一元的。如果是二
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号