From: "Kumar R." Date: 2013-03-04T07:22:21+09:00 Subject: Re: Confusion with Ruby's "case/when" block statement 10.===(10) #=> true Numeric.===(10) #=> true Now look at the above. Both return `true`. Does they output `true` on the same logic? I think `NO`. `10.===(10)` is just like `10 ==(10)` comparison. But `Numeric.===(10)` outputs `true` as class of `10` which is subclass of `Numeric`. "abc".===("abc") #=> true String.===("abc") #=> true Now look at the above. Both return `true`. Does they output `true` on the same logic? I think `NO`. `"abc".===("abc")` is just like simple string literal comparison `"abc" ==("abc")` comparison. But `String.===("abc")` outputs `true` as `"abc"` which is an instance of `String`. Now my question is how ruby detects lefthand side operands types and apply the proper rule of comparisons ? -- Posted via http://www.ruby-forum.com/.