• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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中的block、proc、lambda区别总结
    下一篇:Ruby单元测试框架TestUnit的替代者MiniTest介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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