详解Ruby的运算符和语句优先级

来源:爱站网时间:2019-06-03编辑:网友分享
Ruby是一种非常有表现力的语言,它以其丰富的运算符和语法而自豪,尽管Ruby是将最小惊喜原则视为其哲学之一,今天爱站技术频道小编将讨论详解Ruby的运算符和语句优先级,一起来看看吧!

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)

几条便于记忆的原则:

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

以上就是关于详解Ruby的运算符和语句优先级,要想知道更多的技术知识,大家需要去做多方了解,爱站技术频道是你的满意选择,大家可以放心阅览。

上一篇:Ruby实现批量删除文件脚本的方法

下一篇:Ruby中使用多线程队列下载保存到本地文件的实例演示

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载