[ruby-core:76148] [Ruby trunk Feature#12519] Expansion of modifier_if and modifier_unless

From: matthew@...
Date: 2016-06-26 06:42:32 UTC
List: ruby-core #76148
Issue #12519 has been updated by Matthew Kerwin.


I am against.

It seems to rewrite the precedence of modifier if. I would expect it to evaluate like this:

~~~ruby
false ? (variable = 1) : 2
~~~

Also does it only apply to assignment? How about other method calls? What would happen in all of the following cases?

~~~ruby
a = b = c = 1 if false else 2
[0][0] = 1 if false else 2
[0].[]= 0, 1 if false else 2
a, b = 0, 1 if false else 2
p 1 if false else 2
~~~

It's too confusing.

----------------------------------------
Feature #12519: Expansion of modifier_if and modifier_unless
https://bugs.ruby-lang.org/issues/12519#change-59354

* Author: Blaise Koch
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
Hi all.

I propose a syntax change to allow the below to be valid ruby.
`variable = 1 if false else 2`

This is an extension of the current modifier_if below which accomplishes the same result.
`variable = 1 if false
variable = 2 if !false`

keeping up with the other condition-statement keyword the below should be valid as well.
`variable = 1 unless true else 2`

And is an extension of 
`variable = 1 unless true
variable = 2 unless !true`

While it's true that ternary syntax accomplishes the same task, I feel that the proposed changes are both more readable and a more natural extension of the language.



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

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next