From: shyouhei@... Date: 2016-05-10T07:12:24+00:00 Subject: [ruby-core:75430] [Ruby trunk Feature#12360] More useful return values from bang methods Issue #12360 has been updated by Shyouhei Urabe. reject! returns nil in case nothing was rejected at all. This is useful when a programmer wants to know if actual rejection happened or not, by using single if statement. Returning rejected elements can be handy on some scenarios, though. Maybe a separate method? ---------------------------------------- Feature #12360: More useful return values from bang methods https://bugs.ruby-lang.org/issues/12360#change-58548 * Author: Thomas Sawyer * Status: Open * Priority: Normal * Assignee: ---------------------------------------- It would be nice if bang methods returned results that where of some additional use. Presently most just return the effected receiver. For example, currently Array#reject! works as follows: a = [1,2,3,4] a.reject!{ |x| x % 2 == 0 } => [2,4] a => [2,4] So the return value of #reject! is useless b/c it is just the same as `a` (in this example). So why not return what was rejected instead: a = [1,2,3,4] a.reject!{ |x| x % 2 == 0 } => [1,3] a => [2,4] Now we have useful additional information -- we know exactly what got rejected. To do the same thing presently we would have to fully duplicate the original array and then take the difference -- two extra steps. The downside is that the method would consume a little more memory and probably slow the method's execution a little too. But I tend to side with functionality when I use Ruby. -- https://bugs.ruby-lang.org/ Unsubscribe: