`

ruby的“或等于”操作符

    博客分类:
  • ruby
 
阅读更多
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中对一元操作符重载实例

    今天我们要探讨一下Ruby中的一元操作符重载。 一元操作符有:+ – * ! & 等,为了避免与数值的 + – 混淆,重载一元操作符,要在后面加上一个 @ 操作符。 1. 一个简单的一元操作符重载例子:-@ 操作符 我们以String...

    ruby准备资料ruby准备资料

    Ruby允许程序员为自定义类定义操作符的行为,这意味着你可以让类的对象像原生的数字或其他类型一样进行操作。例如,你可以定义两个自定义对象如何通过"+"操作符相加。操作符重载通过定义方法来实现,如`def +(@...

    Ruby编程语言pdf

    在对Ruby进行了简要的综述之后,本书详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。 本书还包含对Ruby平台上...

    Ruby程序设计语言 (涵盖Ruby 1.8和1.9)源代码

    《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次... 表达式和操作符  语句和控制结构  Method、proc、lambda和closure  类和模块  反射和元编程

    ruby元编程.pdf

    10. 重载运算符和方法:Ruby允许程序员对操作符和方法进行重载,以提供更加面向对象的语法糖。例如,通过重载操作符 `,可以使自定义类的实例支持 `push` 方法。 本书作为填补了语言参考手册和编程食谱书之间的空白...

    ruby2.1.6安装文件

    2. **钻石操作符(>>>)**:Ruby 2.1引入了钻石操作符,用于解决多重继承中的方法解析顺序问题。这个符号使得类可以明确指定从哪个父类继承方法,提高了代码的清晰度。 3. **块参数**:这一版本改进了块处理的语法...

    Ruby自学笔记

    如果行的最后一个字符是操作符或逗号,则解析器会继续读取下一行的内容,直到语句结束。 对于RubyGems,Ruby的包管理器,可以通过`gem list --local`命令查看本地已安装的RubyGems列表。RubyGems的使用可以使开发者...

    Ruby In a Nutshell

    - 方法调用可以使用点操作符或括号,根据上下文自动推断。 4. **类和对象** - Ruby是纯面向对象的语言,一切皆为对象。 - 使用`class`关键字定义类,`initialize`方法作为构造函数。 - 继承使用`操作符,多重...

    Ruby_2.6.6.zip

    4. 验证安装:安装完成后,打开命令提示符(或PowerShell),输入`ruby -v` 和 `gem -v`,如果返回正确的Ruby版本和Gem版本,说明安装成功。 5. 安装Jekyll:在命令行中输入`gem install jekyll` 来安装Jekyll。可能...

    ruby - ruby tutorial

    安装完成后,可以通过命令提示符或 PowerShell 来验证 Ruby 是否成功安装: ```bash ruby -v ``` 如果安装成功,将显示当前安装的 Ruby 版本信息。 ##### Ruby 命令行选项 Ruby 提供了丰富的命令行选项,这些...

    详解Ruby当中的算数运算

    `操作符用于检查某个表达式是否已定义。它可以用来检测变量、方法、`super`调用或`yield`是否存在。例如,`defined? foo`会返回"local-variable"如果foo已被初始化,否则返回`nil`。 最后,双冒号`::`运算符允许...

    ruby1.8.6-26

    5. 验证:安装完毕后,打开命令提示符并输入`ruby -v`,如果输出Ruby的版本信息,说明安装成功。 Ruby 1.8.6 特点: - 兼容性:对Windows系统有良好的支持,解决了许多与操作系统交互的问题。 - 面向对象:Ruby是一...

    ruby教程.rar

    操作符表达式 控制结构/异常处理 方法调用 类/方法的定义 标准库 内部函数 内部变量 内部常数 内部类/模块/异常类 附加库 Ruby变更记录 ruby 1.6 特性 ruby 1.7 特性 ruby 1.8 特性 1.6.8到1.8.0...

    ruby windows一键安装

    在Windows操作系统上安装Ruby通常需要配置环境变量、安装依赖库和设置路径,过程较为繁琐。为了解决这个问题,"ruby windows一键安装" 提供了一个简便的方法,帮助用户快速在Windows上搭建Ruby开发环境。 Ruby的...

    Ruby/tk学习资料

    文档中提到,当窗口关闭后,Ruby解释器的提示符(irb>)会重新出现,表明事件循环已经结束。 #### 5. 再次运行示例 文档中提到,如果尝试再次运行相同的代码,则不会看到窗口再次显示。这是因为事件循环只能运行一次...

    使用Ruby来处理文本的教程

    从上述示例可以看到,使用方括号`[]`操作符能够提取字符串中的子字符串或替换子字符串。 除了处理字符串,Ruby还能处理各种格式的文本数据。比如CSV(逗号分隔值),经常用来存储表格数据,Ruby提供了CSV模块来读取...

    ruby2.6.1.zip

    5. **Symbol到Proc转换的改进**:在Ruby 2.6.1中,使用`&:`操作符将符号转换为Proc更加高效,这在构建函数式编程模式时尤其有用。 6. **Ruby编译器选项**:这个版本增加了新的编译器选项,如`--enable-jit`(Just-...

    Ruby语言入门教程

    例如,字符串对象可以使用`+`操作符进行连接,或者使用`length`方法获取长度。 Ruby的面向对象特性体现在其类和继承机制上。你可以定义自己的类,并通过`class`关键字开始。类可以包含属性(也称为实例变量)和方法...

    ruby入门书籍

    4. **方法和操作符重载**:Ruby允许自定义方法,甚至可以重载操作符,实现自定义的行为。 5. **模块(Module)**:模块是组织代码的方式,可以实现命名空间、混入(Mix-in)功能,使得代码可复用性增强。 6. **元...

Global site tag (gtag.js) - Google Analytics