From: akim.demaille@... Date: 2021-01-13T17:12:42+00:00 Subject: [ruby-core:102067] [Ruby master Bug#17537] === on ranges of strings is not consistant with include? Issue #17537 has been reported by akim (Akim Demaille). ---------------------------------------- Bug #17537: === on ranges of strings is not consistant with include? https://bugs.ruby-lang.org/issues/17537 * Author: akim (Akim Demaille) * Status: Open * Priority: Normal * ruby -v: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin18] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- Hi, In Ruby up to 2.6 both `("1".."12").include?("6")` and `("1".."12") === "6"` were true. In 2.7 and 3.0, `include?` accepts `"6"`, but `===` does not. This was very handy in `case`s. Reading the documentation it is unclear to me whether this change was intentional. ``` $ cat /tmp/foo.rb puts(("1".."12").include?("6")) puts(("1".."12") === "6") p(("1".."12").to_a) $ ruby2.6 /tmp/foo.rb true true ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"] $ ruby2.7 /tmp/foo.rb true false ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"] $ ruby3.0 /tmp/foo.rb true false ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"] ``` Cheers! -- https://bugs.ruby-lang.org/ Unsubscribe: