I was playing around ranges of strings after that post about
'1'..'10'.include? '2 #=> false
I found something else strange when I made a typo:
irb(main):001:0> a = 1..10.to_a
(irb):1: warning: default `to_a' will be obsolete
ArgumentError: bad value for range
from (irb):1
irb(main):004:0> a = '1'..'10'.to_a
=> "1"..["10"]
irb(main):005:0> a.each{|i| p i}
TypeError: cannot convert Array into String
from (irb):5:in `each'
from (irb):5
irb(main):006:0> a
=> "1"..["10"]
irb(main):007:0> a.to_a
TypeError: cannot convert Array into String
from (irb):7:in `each'
from (irb):7:in `to_a'
from (irb):7
irb(main):015:0> r='1'..[10]
=> "1"..[10]
irb(main):016:0> r.each{|i| p i}
TypeError: cannot convert Array into String
from (irb):16:in `each'
from (irb):16
irb(main):017:0> r.include? [5]
NoMethodError: undefined method `>' for false:FalseClass
from (irb):17:in `include?'
from (irb):17
Why can I create a Range where one end is a String and the other is an
Array? I can't do anything with it. I get an error if I create an
Fixnum..Array range, why don't I get one for the String..Array?
-Adam