Ruby Issue Tracking System: Issues
https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2017-01-18T21:11:30Z
Ruby Issue Tracking System
Redmine
Ruby master - Feature #13137 (Rejected): Hash Shorthand
https://redmine.ruby-lang.org/issues/13137
2017-01-18T21:11:30Z
trevorlynnsmith (Trevor Smith)
<p>The ES6 update to Javascript added object shorthand. I propose that a similar hash shorthand be added to Ruby.</p>
<a name="Before"></a>
<h3 >Before<a href="#Before" class="wiki-anchor">¶</a></h3>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">name</span> <span class="o">=</span> <span class="s1">'Matz'</span>
<span class="n">country</span> <span class="o">=</span> <span class="s1">'Japan'</span>
<span class="n">attributes</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">name: </span><span class="nb">name</span><span class="p">,</span>
<span class="ss">country: </span><span class="n">country</span>
<span class="p">}</span>
</code></pre>
<a name="After"></a>
<h3 >After<a href="#After" class="wiki-anchor">¶</a></h3>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">name</span> <span class="o">=</span> <span class="s1">'Matz'</span>
<span class="n">country</span> <span class="o">=</span> <span class="s1">'Japan'</span>
<span class="n">attributes</span> <span class="o">=</span> <span class="p">{</span>
<span class="nb">name</span><span class="p">,</span>
<span class="n">country</span>
<span class="p">}</span>
</code></pre>
<p>This would be very useful when building hashes from keyword arguments (especially with default values):</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">def</span> <span class="nf">build</span><span class="p">(</span><span class="ss">name: </span><span class="s1">'John Doe'</span><span class="p">,</span> <span class="ss">age: </span><span class="mi">100</span><span class="p">,</span> <span class="ss">country: </span><span class="s1">'Earth'</span><span class="p">,</span> <span class="p">)</span>
<span class="n">attributes</span> <span class="o">=</span> <span class="p">{</span>
<span class="nb">name</span><span class="p">,</span>
<span class="n">age</span><span class="p">,</span>
<span class="n">country</span>
<span class="p">}</span>
<span class="k">end</span>
</code></pre>