Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Ruby 3.1: ES6風のハッシュリテラル省略記法が追加(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

日本語タイトルは内容に即したものにしました。

参考: Hashの値の省略記法 - NaCl非公式ブログ

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

上の例では、ハッシュに値を書かずにキー名だけを書いています。これで、キー名と同じ名前を持つ値を識別できます。

ただしご覧のとおり、キーを文字列で渡すとエラーになります。

関連記事

Ruby 3.1にArray#intersect?メソッドが追加(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。