Feature #5899 closed
Added by neleai (Ondrej Bilka) over 13 years ago.
Updated about 9 years ago.
Description
Migration from python to ruby is problematic because ruby lacks certain features.
Most important python advantage is chained comparison
We must wrap every comparison like described below.
puts "yes" if 1 < 2 < 3 < 4
class Fixnum
def < ( a )
(( self <=> a ) ==- 1 ) && a
end
end
class FalseClass
def < ( a )
false
end
end
What is a good way to do chained comparison in Ruby?
My best attempt, so far, is
[ 1 , 2 , 3 , 4 ]. each_cons ( 2 ). all? { | a , b | a < b }
Status changed from Open to Assigned
Assignee set to matz (Yukihiro Matsumoto)
Status changed from Assigned to Feedback
I don't think changing "1 < b < 4
" to "1 < b && b < 4
" is that hard task.
I am not sure it's worth allowing confusing "false < 4
".
Matz.
Target version set to 2.6
Yukihiro Matsumoto wrote:
I don't think changing "1 < b < 4
" to "1 < b && b < 4
" is that hard task.
Writing 1 < b && b < 4
is not hard. But doesn't 1 < b < 4
look intriguing? It's so clean!
I would also expect a slight difference, namely that 1 < b < 4
evaluates b
once and 1 < b && b < 4
evaluates b
twice.
Description updated (diff )
Description updated (diff )
I don't think it's worth adding extra complexity to Ruby.
Matz.
Status changed from Feedback to Rejected
Description updated (diff )
Also available in: Atom
PDF
Like 0
Like 0 Like 0 Like 0 Like 0 Like 0 Like 0 Like 0 Like 0 Like 0 Like 0