Ruby语言==与===的区别

==被称为相等性操作符,通常用来比较两个对象的类型和内容是否匹配(matching),先类型比较,然后内容比较,最终返回true或false。

===被称为条件相等性操作符,通常用于case语句when条件(Regexp、Range、Proc)的匹配(matching),先类型比较,然后与每个可能的条件分支进行内容比较,最终返回true或false。

Class类将===定义为测试其右侧的操作数是否为左侧操作数所命名的类的一个实例。

Range类将===定义为测试其右侧的操作数是否为左侧操作数的范围之内。

Regexp类将===定义为测试其右侧的操作数是否匹配左侧操作数所指定的模式。

Symbol类将===定义为测试符号或字符串的相等性。

==与===在某些类是一样的,相当于别名,比如String,Integer等。

String示例

#下面的==均可被替换为===,作用一样
s = 'foo'
s == 'foo' # => true
s == 'food' # => false
s == 'FOO' # => false

但在某些特定的类,是有区别的,===被重新定义了,比如Range、RegExp、Proc等。

Range示例

(0..2) == (0..2)            #=> true
(0..2) == Range.new(0,2)    #=> true
(0..2) == (0...2)           #=> false
case 
when (1..50)   === 79 then puts "low"
when (51..75)  === 79 then puts "medium"
when (76..100) === 79 then puts "high"
end
# Prints "high"

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/rubye/4373.html

(1)
上一篇 2020年7月26日 21:00
下一篇 2020年7月27日 23:00

相关推荐

  • Ruby中符号(symbol)的深入认识

    符号(symbol)可以理解为轻量的字符串,但符号不是轻量字符串,也不是字符串。符号是对象,一般用作标示符使用。很多 Ruby 初学者都在想办法搞清楚什么是符号和怎么使用符号。 符号最好的描述是身份证。一个符号代表了它是“谁”,而不是代表了它是“什么”。 打开 irb 来看一看他…

    Ruby经验 2020年7月28日
    01.6K0
  • Ruby语言的三种运行方法

    1.ruby命令式 -e命令行选项使解释器执行一行指定的Ruby代码。 2.ruby文件式 helloruby.rb代码清单: 启动控制台,使用cd命令,移动到存放helloruby.rb的文件夹中。执行以下命令: 执行后,会输出显示“Hello,Ruby.”。 3.irb交互式 irb全称为interactive R…

    Ruby经验 2020年6月5日
    01.1K0
  • Ruby语言的鸭子类型(Duck Typing)

    Java语言是一种具有静态类型系统的语言,而Ruby并不像Java这样,Ruby的类不是类型,在Ruby中,对象类型更多是根据对象能做什么决定的,它被称为Duck Typing,如果对象能够像鸭子那样行走,像鸭子那样呱呱叫的话,那么解释器会很高兴地把它当成鸭子来对待。

    Ruby经验 2021年6月30日
    05790

发表回复

登录后才能评论