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

 更新时间:2015年03月24日 09:01:42   投稿:junjie  
这篇文章主要介绍了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编写脚本进行系统管理的教程,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
    2015-04-04
  • 初步讲解Ruby编程中的多线程

    初步讲解Ruby编程中的多线程

    这篇文章主要介绍了初步讲解Ruby编程中的多线程,线程是各种编程语言学习当中的重点和难点,需要的朋友可以参考下
    2015-04-04
  • Ruby中的钩子方法详解

    Ruby中的钩子方法详解

    这篇文章主要介绍了Ruby中的钩子方法详解,本文讲解了什么是钩子方法、included、Devise中的 included、extended、ActiveRecord中的 extended、prepended、inherited等内容,需要的朋友可以参考下
    2015-05-05
  • 在Ruby on Rails上使用Redis Store的方法

    在Ruby on Rails上使用Redis Store的方法

    这篇文章主要介绍了在Ruby on Rails上使用Redis Store的方法,是Ruby程序和Redis数据库结合的有效途径,需要的朋友可以参考下
    2015-06-06
  • ruby 程序的执行顺序

    ruby 程序的执行顺序

    ruby程序的执行是顺序执行的,他是从脚本的第一行执行到最后一行,但是实际执行顺序是
    2008-12-12
  • Ruby解析处理YAML和json格式数据

    Ruby解析处理YAML和json格式数据

    这篇文章主要介绍了Ruby对YAML和json格式的数据处理方法,json序列化、json反序列化,json解析等操作,需要的朋友可以参考下
    2022-04-04
  • 你应该知道的Ruby代码风格

    你应该知道的Ruby代码风格

    Ruby是非常自由灵活的语言,所以不同的Rubist风格差异可能很大。那么在代码规范方面他们的差异大不大呢? 通过分析GitHub上托管的开源代码,得出了 一些有趣的结果 ,让我们一起来看看Rubist的喜好吧
    2014-03-03
  • ruby 正则表达式 教程

    ruby 正则表达式 教程

    ruby 正则表达式 教程...
    2007-11-11
  • 艰难完成 nginx + puma 部署 rails 4的详细记录

    艰难完成 nginx + puma 部署 rails 4的详细记录

    用 Ruby on Rails 写了个半成品 Limlog 博客系统作为 Rails 练习,花了很长时间想解决部署问题,终于才刚解决。。。
    2014-06-06
  • Ruby元编程小结

    Ruby元编程小结

    这篇文章主要介绍了Ruby元编程小结,元编程是可以在运行时动态的操作语言结构(如类、模块、实例变量等)的技术,需要的朋友可以参考下
    2015-01-01

最新评论