Project

General

Profile

Feature #5899

chaining comparsions.

Added by Ondrej Bilka over 4 years ago. Updated 8 days ago.

Status:
Feedback
Priority:
Normal
[ruby-core:42149]

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

History

#1 [ruby-core:42150] Updated by Anonymous over 4 years ago

Ondrej Bilka wrote in post #1041080:

Issue #5899 has been reported by Ondrej Bilka.


Feature #5899: chaining comparsions.
https://bugs.ruby-lang.org/issues/5899

puts "yes" if 1<2<3<4

+1

--
Posted via http://www.ruby-forum.com/.

#2 [ruby-core:42157] Updated by George Koehler over 4 years ago

=begin
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}
=end

#3 [ruby-core:42220] Updated by Yui NARUSE over 4 years ago

  • Status changed from Open to Assigned
  • Assignee set to Yukihiro Matsumoto

#4 [ruby-core:44014] Updated by Yukihiro Matsumoto about 4 years ago

  • 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.

#5 [ruby-core:44145] Updated by Ondrej Bilka about 4 years ago

On Sun, Apr 01, 2012 at 02:30:31AM +0900, matz (Yukihiro Matsumoto) wrote:

Issue #5899 has been updated by 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".
As false goes I would like to define sentinels by inheriting from FalseClass which is separate feature.

Matz.


Feature #5899: chaining comparsions.
https://bugs.ruby-lang.org/issues/5899#change-25543

Author: neleai (Ondrej Bilka)
Status: Feedback
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: Joke
Target version:

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

--
http://bugs.ruby-lang.org/

--

Sysadmins busy fighting SPAM.

#6 [ruby-core:49732] Updated by Yusuke Endoh over 3 years ago

  • Target version set to next minor

#7 [ruby-core:75177] Updated by Stefan Schüßler 8 days ago

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.

Also available in: Atom PDF