From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2025-02-26T13:55:40+00:00 Subject: [ruby-core:121177] [Ruby master Feature#21157] Comparison operator <> Issue #21157 has been updated by nobu (Nobuyoshi Nakada). Description updated lpogic (��ukasz Pomiet��o) wrote: > I propose introducing a comparison operator *<>* which would give the following results: > ```ruby > 1 <> 2 # => -1 > 2 <> 1 # => 1 > 1 <> 1 # => false > 1 <> "a" # => true > ``` I'm not sure what the last example means, maybe incomparable -> true? > With the help of the new operator, complex ordering expressions could be written explicitly. For example: > ```ruby > Point = Struct.new(:x, :y) > array = [Point.new(1, 2), Point.new(6, 4), Point.new(2, 2), Point.new(5, 2)] > > array.sort{|a, b| a.y <> b.y || b.x <> a.x || 0 } # => [#, #, #, #] > ``` ```ruby array.sort{|a, b| (a.y <=> b.y).nonzero? || b.x <> a.x} ``` I agree that it would be a bit shorter/simpler, but I doubt it's worth adding new syntax. > The `<>` notation may look familiar to sql users, where it means 'not equal'. Or BASIC users? Anyway, `<>` in SQL is a boolean operator and not expected returing ��1. ---------------------------------------- Feature #21157: Comparison operator <> https://bugs.ruby-lang.org/issues/21157#change-112115 * Author: lpogic (��ukasz Pomiet��o) * Status: Open ---------------------------------------- I propose introducing a comparison operator *<>* which would give the following results: ```ruby 1 <> 2 # => -1 2 <> 1 # => 1 1 <> 1 # => false 1 <> "a" # => true ``` With the help of the new operator, complex ordering expressions could be written explicitly. For example: ```ruby Point = Struct.new(:x, :y) array = [Point.new(1, 2), Point.new(6, 4), Point.new(2, 2), Point.new(5, 2)] array.sort{|a, b| a.y <> b.y || b.x <> a.x || 0 } # => [#, #, #, #] ``` The `<>` notation may look familiar to sql users, where it means 'not equal'. Defined in the form given it will retain this meaning to some extent: ```ruby a = b = 1 a_not_equal_b if a <> b a_equal_b unless a <> b ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/