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中的一元操作符重载。 一元操作符有:+ – * ! & 等,为了避免与数值的 + – 混淆,重载一元操作符,要在后面加上一个 @ 操作符。 1. 一个简单的一元操作符重载例子:-@ 操作符 我们以String...
在对Ruby进行了简要的综述之后,本书详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。 本书还包含对Ruby平台上...
《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次... 表达式和操作符 语句和控制结构 Method、proc、lambda和closure 类和模块 反射和元编程
操作符表达式 控制结构/异常处理 方法调用 类/方法的定义 标准库 内部函数 内部变量 内部常数 内部类/模块/异常类 附加库 Ruby变更记录 ruby 1.6 特性 ruby 1.7 特性 ruby 1.8 特性 1.6.8到1.8.0...
在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。本书还包含对...
安装完成后,您可以在命令提示符或PowerShell中运行ruby -v命令来验证Ruby是否成功安装。 安装开发工具包(可选): 如果您希望使用Ruby进行开发,可以考虑安装开发工具包(如DevKit)。DevKit是一个用于在Windows...
以下是使用 Ruby 编写的一个简单的加减乘除案例,它接受用户输入的两个数字和操作符,然后执行相应的运算,并输出结果 这个 Ruby 程序首先提示用户输入两个数字和一个操作符,然后根据用户输入的操作符执行相应的...
Ruby比较操作符: 假设变量a=10,变量b=20: Ruby赋值运算符: 假设变量a=10,变量b=20: Ruby并行赋值: Ruby还支持并行赋值的变量。这使得多个一行Ruby代码来初始化变量。例如: a = 10
ruby对excel中的数据进行读取,统计进行计算,重新...存在读取excel数据,进行数量统计,分隔符操作,hash函数统计,取几位小数以及百分比。windows电脑可用,无需安装依赖包,直接使用ruby语言安装包解压即可使用。
其一是将相近的方法和实体放在一个相对集中的域里.Ruby标准包里的Math模块就扮演着这一角色: ruby> Math.sqrt(2) 1.41421 ruby> Math::PI 3.14159 ::操作符告诉 Ruby 解释器在哪里找常数的值(可以想像,Math外的...
EventMachine串行端口功能应适用于所有*Ruby口味(包括MRI,jruby;以及各种操作系统,包括linux,windows和apple) (*为所有的某些值) 使用以下gem进行串行端口连接: : 基本上复制了这个gem: : 但将...
您很可能需要编写一些自定义的ruby代码,使其能够执行所需的操作,但是我尝试使此操作尽可能简单。 执照 GLMWrangler是:copyright:2012,作者:Michael A. Cohen。 它在下发布。 要求 GLMWrangler是为ruby 1.9编写的...
Ruby的class关键字更像是一个作用域操作符,而不是类型声明语句。class关键字的核心任务是把你带到类的上下文中,让你可以在里面定义方法。 每个类都是一个模块,类就是带有三个方法(new,allocate,superclass)的...
e数据:#NF-e标识nf.ide.c_uf = NfeRuby :: CODIGO_UF ['RO']#UF代码nf.ide.c_nf = 1#唯一的NF代码,用于生成访问密钥nf.ide.nat_op =“ SALE”#操作的性质nf.ide.ind_pag = 0#付款指示符(0
获取群集节点状态(已使用#个文件描述符,RAM消耗等) 获取有关交换,队列,绑定的信息 关闭客户端连接 获取有关虚拟主机,用户,权限的信息 获取有关已启用的插件,协议,其端口等的信息 管理虚拟主机,用户,...
字符串插值允许我们评估Ruby代码,并将返回值注入字符串的中间。 通常,我们会看到类似以下的内容: name = "Bob"puts "Hello, #{ name } "# => "Hello, Bob" 但是,我们不仅限于注入简单变量。 如果仅将英镑符号/...
Proc对象 Proc是由块转换来的对象。创建一个Proc共有四种方法,分别是: 示例代码 ...除了上面的四种之外,还有一种通过&操作符的方式,将代码块与Proc对象进行转换。如果需要将某个代码块作为参数传递
Range是范围对象的类,定义的时候可以使用范围操作符“..”或者“…”,“..”生成的范围对象包括起点和终点,“…”生成的范围对象不包括起点和终点,范围是由是一序列有顺序、有规律的元素对象组成,任何有顺序,...
Ruby脚本介绍在这个项目中,我们将编写一堆小的Ruby程序,这些程序可以执行各种操作。 我们的主要目标是让您有机会提出关于遇到的概念的问题。 希望这些练习还将为您提供有关项目构建内容的一些想法-我们将看到开源...