From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.1 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, FORGED_GMAIL_RCVD,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id C94E51F462 for ; Sun, 9 Jun 2019 03:11:24 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 177B712098B; Sun, 9 Jun 2019 12:11:19 +0900 (JST) Received: from o1678916x28.outbound-mail.sendgrid.net (o1678916x28.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 6E5F4120A29 for ; Sun, 9 Jun 2019 12:11:16 +0900 (JST) Received: by filter0079p3iad2.sendgrid.net with SMTP id filter0079p3iad2-13325-5CFC78D4-2A 2019-06-09 03:11:16.828834641 +0000 UTC m=+382633.880522979 Received: from herokuapp.com (unknown [3.95.192.78]) by ismtpd0046p1mdw1.sendgrid.net (SG) with ESMTP id mdo7zojNTIqIgfxLNs7B8w for ; Sun, 09 Jun 2019 03:11:16.707 +0000 (UTC) Date: Sun, 09 Jun 2019 03:11:16 +0000 (UTC) From: lyoneil.de.sire@gmail.com Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 68508 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 15236 X-Redmine-Issue-Author: ignatiusreza X-Redmine-Sender: ignatiusreza X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: =?us-ascii?Q?8OtXF+V1vT0=2F2eyFCMpb18Woeupf6kIwgLAds0jNqElN+dD+3NyYkauvvRDtPD?= =?us-ascii?Q?FxJKBc9We5Rrj1TONmGD4KZ2ZoBVdAgw6P+QkhD?= =?us-ascii?Q?KN0y8IMtK=2FBh7NAUdkchjsDwRokJZUSFpfbA+g7?= =?us-ascii?Q?qUdCMuX5ssilct29+1tYz0iRxpHzMqynODvqx7X?= =?us-ascii?Q?vHUl7=2FBpaWJVGxUrRgudH3Um1nEHHyCl=2FSQ=3D=3D?= To: ruby-core@ruby-lang.org X-ML-Name: ruby-core X-Mail-Count: 93030 Subject: [ruby-core:93030] [Ruby trunk Feature#15236] add support for hash shorthand X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #15236 has been updated by ignatiusreza (Ignatius Reza Lesmana). I was reading the presentation slide for the experimental feature for syntax matching.. in which, there's support for "shorthand" matching with hash, in the form of `{ a: }`.. or, following the examples presented above: ``` def foo(param1:, param2:) param + param2 end param1 = 7 param2 = 42 foo(param1:, param2:) def respond_with(resource, options) meta = extract_meta(resource, options) etc = extract_etc(resource, options) { resource:, meta:, etc: } end # destructuring {data:, meta:, etc:} = {data: [1,2,3], meta: {mobile: true}, etc: "more info"} ``` I think, this answers the concern mentioned above regarding `{ a }` being confused with a Set instead of Hash.. wydt? ref: https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7?slide=34 ---------------------------------------- Feature #15236: add support for hash shorthand https://bugs.ruby-lang.org/issues/15236#change-78404 * Author: ignatiusreza (Ignatius Reza Lesmana) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- PR in github: https://github.com/ruby/ruby/pull/1990 inspired by javascript support for object literal shorthand notation `{ a }`, which will be expanded into `{ a: a }`.. to avoid ambiguity, this shorthand is only supported when hash is defined with `{ }` notation.. in other situation where the brackets is optional, e.g. function call, we still need to write it in full (`m(a : a)` instead of `m(a)`, or `m(a, b, c: c)` instead of `m(a, b, c)`.. -- https://bugs.ruby-lang.org/