[#98621] Re: Function getlogin_r()'s protoype] — Bertram Scharpf <lists@...>
FYI,
3 messages
2020/06/02
[#98947] [Ruby master Feature#16986] Anonymous Struct literal — ko1@...
Issue #16986 has been reported by ko1 (Koichi Sasada).
66 messages
2020/06/26
[#98962] [Ruby master Bug#16988] Kernel.load loads file from current directory without '.' in path — misharinn@...
Issue #16988 has been reported by TheSmartnik (Nikita Misharin).
5 messages
2020/06/26
[#98969] [Ruby master Feature#16994] Sets: shorthand for frozen sets of symbols / strings — marcandre-ruby-core@...
Issue #16994 has been reported by marcandre (Marc-Andre Lafortune).
7 messages
2020/06/26
[#100117] [Ruby master Feature#16994] Sets: shorthand for frozen sets of symbols / strings
— matz@...
2020/09/25
Issue #16994 has been updated by matz (Yukihiro Matsumoto).
[ruby-core:98735] [Ruby master Feature#6869] Do not treat `_` parameter exceptionally
From:
lukas@...
Date:
2020-06-11 08:28:47 UTC
List:
ruby-core #98735
Issue #6869 has been updated by docx (Lukas Dolezal).
Re
> In these descriptions, lowercase letter means the characters ''a'' though ''z'', as well as ''_'', the underscore.
I think what they mean here is that you can use it inside of a variable. Probably just did not realized the single underscore case :) But that is my interpretation.
----------------------------------------
Feature #6869: Do not treat `_` parameter exceptionally
https://bugs.ruby-lang.org/issues/6869#change-86090
* Author: alexeymuranov (Alexey Muranov)
* Status: Open
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version: 3.0
----------------------------------------
I started by commenting on #6693, but i have realized that this is a slightly different request.
I propose to not treat the variable name "`_`" exceptionally. Current behavior:
~~~ruby
{0=>1}.each_with_index { |_,_| p _ } # [0, 1]
~~~
prints "[0, 1]", but
~~~ruby
{1=>2}.each_with_index { |x,x| p x } # SyntaxError: (eval):2: duplicated argument name
~~~
raises "SyntaxError: (eval):2: duplicated argument name".
Similarly for methods:
~~~ruby
def f(_, _)
_
end
f(0, 1) # => 0
def f(x, x)
x
end # => SyntaxError: (eval):2: duplicated argument name
~~~
Observe also that the use of repeated `_` parameter is not consistent between methods and blocks: for methods the value is the first assigned value, and for blocks it is the array of all the assigned values.
1. I propose to use the same rule for all variables, without distinguishing `_` specially.
In particular i propose to allow to repeat any variable, not only `_`, in block or method arguments without raising an error.
There may be several solutions what the repeated argument will hold: it may hold the array of all assigned values, the first assigned value, the last assigned value, the first non-nil assigned value, or the last non-nil assigned value.
2. I propose to treat repeated arguments in methods and in blocks the same way (do not know which one).
3. For unused variables i propose to introduce a special placeholder, for example "`-`" not followed by anything other than a delimiter (comma or bracket):
~~~ruby
each_with_index { |-, value| puts value }
-, -, suffix = parse(name)
~~~
--
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>