ruby的 ||= , && , || 等运算符的理解。
2013-03-18 12:12
155 查看
先让我们来看段cancan插件中的代码:
这段代码相当于下面一段代码:
相比这两段代码,下面代码是很不友好的,恶心的。
哪我们就来看下 ||= 这上符号。这个符号的意思就是如果全边不存在就返回右边的。
比如 x ||= y,这个方法实际是怎么执行的呢:
错误的想法:
x ||= y => x = x || y
正确的: x ||= y => x || x = y. 如果x 不为空是不会有任何操作的。
下面再看下 &&, ||
and与&&都是和。前者优先级比后者低。
or与||都是或。前者优先级比后都低
no与!都是非。前者优先级比后都低.
在ruby中 && || 这两个运算符有点特别。
当&& 左边为 false, nil 时就直接返回 左边,不执行右边。
当|| 左边不为false, nil 时就直接返回左边,不执行右边。
def aliased_actions @aliased_actions ||= default_alias_actions end
这段代码相当于下面一段代码:
def aliased_actions if @aliased_actions return @aliased_actions else return default_alias_actions end end
相比这两段代码,下面代码是很不友好的,恶心的。
哪我们就来看下 ||= 这上符号。这个符号的意思就是如果全边不存在就返回右边的。
比如 x ||= y,这个方法实际是怎么执行的呢:
错误的想法:
x ||= y => x = x || y
正确的: x ||= y => x || x = y. 如果x 不为空是不会有任何操作的。
下面再看下 &&, ||
and与&&都是和。前者优先级比后者低。
or与||都是或。前者优先级比后都低
no与!都是非。前者优先级比后都低.
在ruby中 && || 这两个运算符有点特别。
当&& 左边为 false, nil 时就直接返回 左边,不执行右边。
当|| 左边不为false, nil 时就直接返回左边,不执行右边。
相关文章推荐
- C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数)理解。
- 理解JS中 || 和 &&运算符
- 理解JS中 || 和 &&运算符
- 理解JS中 || 和 &&运算符
- 理解JS中 || 和 &&运算符
- ruby 字符串 理解 "" ''
- c语言 &取地址运算符的理解
- [No000011]Ruby之attr_reader,attr_writer,attr_accessor理解&用法
- Java基础语法--对变量&运算符的理解
- 理解运算符&&的三个不同层次
- 深入理解 C++ 指针(三)---运算符&和*
- &&运算符的三个层次理解
- c语言 &取地址运算符的理解
- js中与、或运算符 ||、&& 短路介绍
- 关于"&"运算符效率低下的问题,有什么好的解决办法?
- extern "C"的理解
- Javascript 按位与运算符 (&)使用介绍
- STM32堆和栈(Heap & Stack)的资料理解
- 阻塞&&非阻塞和同步&&异步理解
- js 与或运算符 || && 妙用