From: Philipp Kern Date: 2005-05-28T08:15:20+09:00 Subject: Coercion and ranges Dear Ruby fellows, what is the reason behind the fact that there is no generic coercion system apart from the additional overhead? Concretly I tried to add some ranges. Childish as I am I thought of a straightforward way by implementing Range#+: class Range def +(other) self.entries + other.entries end end However, this does not work on multiple ranges as a temporary array is constructed, which does not know of the ability to coerce ranges to arrays. irb(main):001:0> (?A..?C) + (?a..?c) => [65, 66, 67, 97, 98, 99] irb(main):002:0> (?A..?C) + (?a..?c) + (?0..?3) TypeError: cannot convert Range into Array from (irb):2:in `+' from (irb):2 From my understanding the conversion should happen automatically when coercion is properly implemented. Surely one could just add "to_a" to all the ranges, but it certainly made me pondering about it. Kind regards, Philipp Kern