ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: merch-redmine@jeremyevans.net
To: ruby-core@ruby-lang.org
Subject: [ruby-core:101751] [Ruby master Feature#17472] HashWithIndifferentAccess like Hash extension
Date: Sun, 27 Dec 2020 17:13:20 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-89578.20201227171319.5@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17472.20201226110418.5@ruby-lang.org

Issue #17472 has been updated by jeremyevans0 (Jeremy Evans).


I am against adding this in principle.  One of the harder things for new Ruby programmers to understand is the difference between symbols and strings.  This is even more difficult for programmers learning Ruby and Rails at the same time, due to the fact that Rails treats symbols and strings the same in most places.

I'm also against adding this for the reasons that @Eregon mentioned. If a speed-up is desired, `HashWithIndifferentAccess` can easily be a C-extension gem, there is no pressing reason to have it in core or stdlib.

If we do decide to add this to Ruby, it should have a better name. `HashWithIndifferentAccess` is not indifferent in regards to type (`1` and `"1"` are different).  `HashWithIndifferentAccess` is not indifferent in regards to case (`"a"` and `"A"` are different).  `HashWithIndifferentAccess` is not indifferent in regards to encoding, at least some of the time (`"\u1234"` and `"\u1234".b` are different).  "WithIndifferentAccess" is too vague.  `HashCovertingSymbolKeysToStringKeys` is more accurate, though quite long.

----------------------------------------
Feature #17472: HashWithIndifferentAccess like Hash extension
https://bugs.ruby-lang.org/issues/17472#change-89578

* Author: naruse (Yui NARUSE)
* Status: Open
* Priority: Normal
* Target version: 3.1
----------------------------------------
Rails has [ActiveSupport::HashWithIndifferentAccess](https://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html), which is widely used in Rails to handle Request, Session, ActionView's form construction, ActiveRecord's DB communication, and so on. It receives String or Symbol and normalize them to fetch the value. But it is implemented with Ruby. If we provide C implementation of that, Rails will gain the performance improvement.



-- 
https://bugs.ruby-lang.org/

  parent reply	other threads:[~2020-12-27 17:13 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-26 11:04 [ruby-core:101707] [Ruby master Feature#17472] HashWithIndifferentAccess like Hash extension naruse
2020-12-26 11:06 ` [ruby-core:101708] " ronnie
2020-12-26 12:53 ` [ruby-core:101713] " eregontp
2020-12-27 10:44 ` [ruby-core:101737] " mame
2020-12-27 16:14 ` [ruby-core:101747] " eregontp
2020-12-27 17:13 ` merch-redmine [this message]
2020-12-27 19:09 ` [ruby-core:101755] " daniel
2020-12-27 20:08 ` [ruby-core:101758] " marcandre-ruby-core
2020-12-28  3:41 ` [ruby-core:101767] " naruse
2020-12-28 11:22 ` [ruby-core:101772] " jean.boussier
2020-12-28 11:24 ` [ruby-core:101773] " naruse
2020-12-28 11:53 ` [ruby-core:101774] " eregontp
2020-12-29 20:34 ` [ruby-core:101807] " zverok.offline
2021-01-02 10:53 ` [ruby-core:101877] " nobu
2021-01-17 12:57 ` [ruby-core:102122] " hcatlin
2021-01-23 11:54 ` [ruby-core:102217] " mail
2021-03-27  0:31 ` [ruby-core:103046] " yoelblumenator
2021-03-27  1:03 ` [ruby-core:103048] " marcandre-ruby-core
2021-03-27  6:49 ` [ruby-core:103051] " yoelblumenator
2021-03-28  1:56 ` [ruby-core:103066] " duerst
2021-03-28  3:17 ` [ruby-core:103067] " marcandre-ruby-core
2021-03-28 17:29 ` [ruby-core:103075] " yoelblumenator
2021-03-31  0:19 ` [ruby-core:103119] " duerst
2021-04-01 21:49 ` [ruby-core:103161] " lamont
2021-04-02  4:11 ` [ruby-core:103163] " sawadatsuyoshi
2021-04-02 13:36 ` [ruby-core:103182] " yoelblumenator
2021-04-02 13:45 ` [ruby-core:103183] " yoelblumenator
2021-04-02 14:13 ` [ruby-core:103184] " daniel
2021-04-02 19:34 ` [ruby-core:103189] " lamont
2021-04-02 19:42 ` [ruby-core:103190] " lamont
2022-11-20  8:18 ` [ruby-core:110824] " naruse (Yui NARUSE)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-89578.20201227171319.5@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).