Project

General

Profile

Actions

Bug #17537

closed

=== on ranges of strings is not consistant with include?

Added by akim (Akim Demaille) over 3 years ago. Updated about 3 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin18]
[ruby-core:102067]

Description

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 cases. 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!

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0