黑松山资源网 Design By www.paidiu.com

Ruby 是一种表达能力很强的语言,这得意于它异常丰富的运算符和语法糖,虽然 Ruby 一直把最小惊讶原则作为它的哲学之一,但还是常常看到让人惊讶不已,难于理解的代码,这可能是因为对它运算符和语句优先级理解不透导致,今天就和大家聊一聊 Ruby 运算符和语句的优先级。

先看一句简单的代码,猜一猜它的输出是什么。

复制代码 代码如下:
  puts {}.class

很多人一定以为结果是 Hash,但实事上结果是空,不信可以在 irb 里试一试。

再看一段代码。

复制代码 代码如下:
puts "5 && 3 is #{5 && 3}"
puts "5 and 3 is #{5 and 3}"
a = 5 && 3
b = 5 and 3
puts "a is #{a}"
puts "b is #{b}"

结果是:

复制代码 代码如下:
5 && 3 is 3
5 and 3 is 3
a is 3
b is 5

有没有觉得奇怪 b 怎么是 5 而不是 3 呢。

如果这两个例子你也觉得奇怪,那说明你对 Ruby 一些运算符和语句的优先级理解还不透彻,判断有误。 puts {}.class 实际上相当于 (puts {}).class -> nil.class 所以输出为空。{}相当于一个空的 block,优先和方法 puts 结合。 && 和 and 的优先是不同的,而且和 = 号的优先级顺序比较, && > = > and,所以 a = 5 && 3 相当于 a = ( 5 && 3),而 b = 5 and 3 相当于 ( b = 5 ) and 3,所以结果 a 和 b的值是不同的。

下面一张表格是 Ruby 中常见的运算符和语句的优先级列表,从上到下优先级递减。


Ruby operators (highest to lowest precedence)

Ruby的运算符和语句优先级介绍

几条便于记忆的原则:

1.关键字类如if and 等的优先级是要比符号类低;
2.赋值符号 = ||= 等优先级也比较低,仅次于关键字类;
3.[] []= 元素引用的优先级非常高。

黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。