[#104740] [Ruby master Feature#18057] Introduce Array#average — ggmichaelgo@...

Issue #18057 has been reported by ggmichaelgo (Michael Go).

14 messages 2021/08/02

[#104774] [Ruby master Bug#18061] Execshield test: libruby.so.N.N.N: FAIL: property-note test because no .note.gnu.property section found — jaruga@...

Issue #18061 has been reported by jaruga (Jun Aruga).

48 messages 2021/08/04

[#104780] [Ruby master Bug#18062] Ruby with enabled LTO segfaults during build — v.ondruch@...

Issue #18062 has been reported by vo.x (Vit Ondruch).

30 messages 2021/08/05

[#104831] [Ruby master Bug#18066] Load did_you_mean eve/error_highlight even with --disable-gems — v.ondruch@...

Issue #18066 has been reported by vo.x (Vit Ondruch).

10 messages 2021/08/07

[#104851] [Ruby master Bug#18073] test/ruby/test_jit.rb: failures "error: invalid use of '__builtin_va_arg_pack ()'" on Ruby 2.7.4 on gcc 4.8.5 on RHEL7 — jaruga@...

Issue #18073 has been reported by jaruga (Jun Aruga).

14 messages 2021/08/09

[#104927] [Ruby master Bug#18077] Marshal.dump(closed_io) raises IOError instead of TypeError — "larskanis (Lars Kanis)" <noreply@...>

Issue #18077 has been reported by larskanis (Lars Kanis).

10 messages 2021/08/16

[#104960] [Ruby master Feature#18083] Capture error in ensure block. — "ioquatix (Samuel Williams)" <noreply@...>

Issue #18083 has been reported by ioquatix (Samuel Williams).

32 messages 2021/08/18

[#105021] [Ruby master Misc#18122] DevelopersMeeting20210916Japan — "mame (Yusuke Endoh)" <noreply@...>

Issue #18122 has been reported by mame (Yusuke Endoh).

12 messages 2021/08/20

[#105069] [Ruby master Bug#18133] LTO: TestGCCompact#test_ast_compacts segfaults on i686 — "vo.x (Vit Ondruch)" <noreply@...>

Issue #18133 has been reported by vo.x (Vit Ondruch).

25 messages 2021/08/25

[#105077] [Ruby master Feature#18136] take_while_after — "zverok (Victor Shepelev)" <noreply@...>

Issue #18136 has been reported by zverok (Victor Shepelev).

21 messages 2021/08/27

[ruby-core:105024] [Ruby master Feature#18124] Hash shorthands (matching constructors and destructuring functionality in JS)

From: "myxoh (Nicolas Klein)" <noreply@...>
Date: 2021-08-20 18:04:50 UTC
List: ruby-core #105024
Issue #18124 has been reported by myxoh (Nicolas Klein).

----------------------------------------
Feature #18124: Hash shorthands (matching constructors and destructuring functionality in JS)
https://bugs.ruby-lang.org/issues/18124

* Author: myxoh (Nicolas Klein)
* Status: Open
* Priority: Normal
----------------------------------------
# **Suggestion:**
To implement two shorthand operators that allows you to destructure hash into local variables and construct local variables into a hash.

# **Context:**
Javascript and other languages have a similar feature. It's helpful, and I don't think there's anything stopping Ruby for supporting it.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Ruby also supports destructuring from an array.

# **Syntax:**
## Destructuring:

```ruby
hash = {a: 'a', b: 'b'}
%D{ a, b } = hash
```
Would be equivalent to:

```ruby
hash = {a: 'a', b: 'b'}
a, b = hash[:a], hash[:b]
```

Hence

```ruby
a == 'a'
=> true
b = 'b'
=> true
```


It could also support the ** destructuring syntax
```ruby
hash = {a: 'a', b: 'b', c: 'c', d: 'd', e: 'e'}
%D{ a, b, **others } = hash
```

Would be equivalent to:

```ruby
hash = {a: 'a', b: 'b', c: 'c', d: 'd', e: 'e'}
a, b, others = hash[:a], hash[:b], hash.except(:a, :b)
```

Hence

```ruby
a == 'a'
=> true
b = 'b'
=> true
others = { c: 'c', d: 'd', e: 'e' }
=> true
```


## Constructor:
The constructor shorthand would allow you to create a hash where the symbol key has the same name as the variable.

For example:

```ruby
local_number = 1 
user = OStruct.new(name: 'john')
hash = %C{ local_var, user }
```

would be equivalent to:
```ruby
local_number = 1 
user =  OStruct.new(name: 'john')
hash = { local_number: local_number, user: user }
```




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