From: matz@... Date: 2017-03-13T06:46:14+00:00 Subject: [ruby-core:80104] [CommonRuby Feature#13122][Rejected] Special syntax for Hash#default_proc Issue #13122 has been updated by Yukihiro Matsumoto. Status changed from Open to Rejected I don't think `default_proc` is not worth adding a new syntax. Matz. ---------------------------------------- Feature #13122: Special syntax for Hash#default_proc https://bugs.ruby-lang.org/issues/13122#change-63530 * Author: William Woodruff * Status: Rejected * Priority: Normal * Assignee: * Target version: ---------------------------------------- The current Hash#default_proc flow usually looks something like this: ~~~ ruby my_hash = { key: "value" } my_hash.default_proc = proc { |h, k| h[k] = "other value" } ~~~ This makes the common practice of freezing large constant hashes unwieldy. For example, this: ~~~ruby MY_HASH = { key: "value" }.freeze ~~~ needs to become ~~~ruby MY_HASH = { key: "value" } MY_HASH.default_proc = proc { |h, k| h[k] = "other value" } MY_HASH.freeze ~~~ if a `default_proc` is used. I propose a new syntax for setting the default_proc within the hash-declaration itself: ~~~ruby my_hash = { key: "value" *: proc { |h, k| h[k] = "other value" } } ~~~ `*:` as a hash-key is currently a syntax error, so I think there's space in the language for this. Of course, this should also support rocket-style: ~~~ruby my_hash = { "key" => "value" * => proc { |h, k| h[k] = "other value" } } ~~~ (I'm completely open to alternative syntaxes, `*` just comes to mind because of wildcarding). I'm happy to attempt work on this, if this feature is desired. I have experience with MRI's API, but not with writing new syntax (which I assume would go in parse.y), so I'd appreciate the help of someone who's familiar with the intricacies of parse.y. Best, William Woodruff -- https://bugs.ruby-lang.org/ Unsubscribe: