Ruby triple equal

今天读sexp_processor源代码,看到有多出调用 Class === Object 这样的语法,突然之间没想出来===是干嘛的了。网上搜索了一下,原来是判断后面这个对象是不是前面这个类的实例,比如

>> Object === Object.new
=> true

这个和is_a?不就没区别了吗?

>> Object.new.is_a? Object
=> true

google一把,好像是说===比is_a?更优雅,而且===被用在case...when的语法当中

case shape
when Square, Rectangle
  # ...
when Triangle
  # ...
else
  # ...
end

上面这段代码摘自Programming Ruby

Posted in  ruby


blog comments powered by Disqus
Fork me on GitHub