2007-11-08 Range#& Ruby ここ経由で知った古い話題。 空区間をどう表現するかは議論の余地があると思うけど、 a & b & c とかやるならnilよりは放置かなぁ。 class Range def &(rhs) b = [self, rhs].max {|x,y| x.begin <=> y.begin } e = [self, rhs].min {|x,y| x.end <=> y.end } Range.new(b.begin, e.end, e.exclude_end?) end end