Issue #14579 has been updated by Eregon (Benoit Daloze).


I find this syntax very confusing.

The the occurrences of `password:` above means two very different things (required kwarg and auto-hash creation).

For

~~~ruby
x = 1
y = 2
h = {x:, y:}
~~~

it looks to me like the values are missing.
I'd prefer a syntax which is different than "key syntax without value", and refers to the variable name used for the value more clearly, like:

~~~ruby
x = 1
y = 2
h = {x, y}
~~~

That would also work for the second case like so:

~~~ruby
def login(username: ENV["USER"], password:)
  p({username, password})
end
~~~

----------------------------------------
Feature #14579: Hash value omission
https://bugs.ruby-lang.org/issues/14579#change-70909

* Author: shugo (Shugo Maeda)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
How about to allow value omission in Hash literals:

```ruby
x = 1
y = 2
h = {x:, y:}
p h #=> {:x=>1, :y=>2}
```

And in keyword arguments:

```ruby
def login(username: ENV["USER"], password:)
  p(username:, password:)
end

login(password: "xxx") #=> {:username=>"shugo", :password=>"xxx"}
```


---Files--------------------------------
hash_value_omission.diff (619 Bytes)


-- 
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>