Issue #6693 has been updated by alexeymuranov (Alexey Muranov).


It this really necessary to treat the variable name `_` exceptionally at the interpreter's level?  Why not to use the same rule for all variables, and for unused variables introduce a special placeholder, for example `-` not followed by anything other than a delimiter (comma or bracket):

 each_with_index { |-, value| puts value }

 -, -, suffix = parse_name

The underscore is treated exceptionally because it can be repeated in block arguments:

 {1=>2}.each_with_index { |_,_| puts "Oho!" }  # Ok

 {1=>2}.each_with_index { |x,x| puts "Oho!" }  # SyntaxError: (eval):2: duplicated argument name

Is this exception really necessary?  Maybe for repeated arguments, the variable (`_` or `x`) can be made to hold, for example, the last non-nil argument of those assigned to it?
----------------------------------------
Feature #6693: Don't warn for unused variables starting with _
https://bugs.ruby-lang.org/issues/6693#change-28782

Author: marcandre (Marc-Andre Lafortune)
Status: Feedback
Priority: Low
Assignee: 
Category: core
Target version: 2.0.0


Currently, variables which are set but not used will generate a warning (ruby -w), except if they have the special name "_".

So best practice is to use "_" for all unused variables. This does not encourage readable code.

    # Currently must read:
    _, _, _, suffix = parse_name

    # could read:
    _first, _middle, _last, suffix = parse_name

We should not warn for unused variables starting with a "_".

This would create an option (but no obligation) to use more descriptive names than "_" without generating warnings.



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