Issue #9442 has been updated by Tsuyoshi Sawada.


Yukihiro Matsumoto wrote:
> I am sorry but the proposed syntax conflicts with the existing syntax, especially the equal operator one.
> You have proposed improvement on case statement, but it still conflicts.
> 
> So (until someone come up with the new non-conflicting syntax), I have to reject this proposal.
> 
> Matz.

My understanding is that

    a, b == 1, 2

or

    1, 2 === a, b

are currently ungrammatical. Can you point me to how these would conflict with the current syntax?

----------------------------------------
Feature #9442: Multiple comparison construction with `==` and `===`
https://bugs.ruby-lang.org/issues/9442#change-44548

* Author: Tsuyoshi Sawada
* Status: Rejected
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
----------------------------------------
I often want to write a condition that depends on multiple variables like this:

    if a == 1 and b == 2 then ...
    elsif a == 2 and b == 1 then ...
    elsif a == 2 and b == 2 then ...
    ...

In order to make this compact, I sometimes write these cases like this:

    case [a, b]
    when [1, 2] then ...
    when [2, 1] then ...
    when [2, 2] then ...
    ...

or even

    if [a, b] == [1, 2] then ...
    elsif [a, b] == [2, 1] then ...
    elsif [a, b] == [2, 2] then ...
    ...

but I feel that constructing these arrays is a waste of resource, as well as is not elegant to write.

I request a syntax feature that allows multiple comparison using `==` and `===` in the spirit of multiple assignment with `=` :

    x, y, z = :foo, :bar, :baz

so that the two examples above would be respectively written as:

    case a, b
    when 1, 2 then ...
    when 2, 1 then ...
    when 2, 2 then ...
    ...

and

    if a, b == 1, 2 then ...
    elsif a, b == 2, 1 then ...
    elsif a, b == 2, 2 then ...
    ...




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