Ruby 3.1: ES6風のハッシュリテラル省略記法が追加(翻訳)
Ruby 3.1に、ECMAScript 6オブジェクトのショートハンド構文に似たハッシュリテラルのショートハンド構文が追加されました。(c60dbcd)。
まず、ECMAScript 6のハッシュリテラル値省略がどのようなものかを見てみましょう。
const a = 1;
const b = 2;
const c = {a, b};
console.log(c);
//=> {"a":1,"b":2}
このショートハンド構文の主なメリットは、プロパティとして渡される変数名と同じキー名を持つハッシュを定義したい場合に、キー名を渡すだけでショートハンド構文を利用できることです。
変更前
a = 1
b = 2
c = {a: a, b: b}
#=> {:a=>1, :b=>2}
c = {"a": a, "b": b}
#=> {:a=>1, :b=>2}
上の例では、キー名と値が同じであっても、いちいち値を書かなければなりません。
変更後
a = 1
b = 2
c = {a:, b:}
#=> {:a=>1, :b=>2}
c = {"a":, "b":}
#=> Raises SyntaxError
上の例では、ハッシュに値を書かずにキー名だけを書いています。これで、キー名と同じ名前を持つ値を識別できます。
ただしご覧のとおり、キーを文字列で渡すとエラーになります。
概要
原著者の許諾を得て翻訳・公開いたします。
日本語タイトルは内容に即したものにしました。
参考: Hashの値の省略記法 - NaCl非公式ブログ