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执行周期性任务的三种gem介绍

    ruby执行周期性任务的三种gem介绍

    无论是用ruby做系统管理,还是用rails做web开发,都可能遇到周期性任务,它们按照一定时间周期(1小时,2天......)持续地触发。在ruby中,我认为一次性任务使用 sidekiq 来完成是非常方便的,而周期性的任务就需要用到 whenever , sidetiq , clockwork 等等gem了。
    2014-07-07
  • Ruby的25个编程细节(技巧、实用代码段)

    Ruby的25个编程细节(技巧、实用代码段)

    这篇文章主要介绍了Ruby的25个编程细节(技巧、实用代码段),本文直接给出主题和相应代码,需要的朋友可以参考下
    2015-05-05
  • CentOS 7下配置Ruby语言开发环境的方法教程

    CentOS 7下配置Ruby语言开发环境的方法教程

    对于新入门的开发者,如何安装 Ruby, Ruby Gems 和 Rails 的运行环境可能会是个问题,下面这篇文章主要给大家分享了在CentOS 7下配置Ruby语言开发环境的方法教程,文中介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Ruby生成随机数的方法总结

    Ruby生成随机数的方法总结

    在本文里小编给大家分享的是关于Ruby生成随机数的知识点方法,有需要的朋友们可以学习下。
    2019-01-01
  • 苹果mac OS X上安装metasploit

    苹果mac OS X上安装metasploit

    最近购了台mac一直没有时间折腾,下面就把在mac上安装metasploit的步骤做一个简单的记录吧
    2014-06-06
  • Ruby程序中创建和解析XML文件的方法

    Ruby程序中创建和解析XML文件的方法

    这篇文章主要介绍了Ruby程序中创建和解析XML文件的方法,创建用builder库,解析用ReXML库,需要的朋友可以参考下
    2015-11-11
  • Windows下ruby语言安装教程

    Windows下ruby语言安装教程

    这篇文章主要介绍了Windows下ruby语言安装教程,本文使用rubyinstaller提供的安装包安装,并给出图文说明,非常简单,需要的朋友可以参考下
    2015-02-02
  • Windows下Ruby on Rails开发环境安装配置图文教程

    Windows下Ruby on Rails开发环境安装配置图文教程

    这篇文章主要介绍了Windows下Ruby on Rails开发环境安装配置图文教程,ROR初学者必看,需要的朋友可以参考下
    2014-07-07
  • Ruby里4种比较函数(equal?, eql?, ==, ===)详解

    Ruby里4种比较函数(equal?, eql?, ==, ===)详解

    本文给大家详细介绍了Ruby中的4种比较函数(equal?, eql?, ==, ===)的用法,并用具体示例进行了讲解,希望对大家学习ruby能够有所帮助。
    2016-02-02
  • Ruby实现的删除已经合并的git分支脚本分享

    Ruby实现的删除已经合并的git分支脚本分享

    这篇文章主要介绍了Ruby实现的删除已经合并的git分支脚本分享,本文给出脚本代码、使用方法和执行结果,需要的朋友可以参考下
    2015-01-01

最新评论