From: "byroot (Jean Boussier)" Date: 2022-02-21T20:07:15+00:00 Subject: [ruby-core:107696] [Ruby master Feature#18595] Alias `String#-@` as `String#dedup` Issue #18595 has been updated by byroot (Jean Boussier). > Then why couldn't .freeze do that more valuable thing? Because it's not free, it incurs an additional hash lookup, and may grow the interned string hash. So in many cases where you know that deduping isn't necessary, but you do want to freeze a string, it would slow things down. > The .@+ is still not resolved, even though #16295 is closed. I closed it because I was the feature requester and after the two years of discussion I no longer believe `+@` needs a chainable alias. If you think it does, it might be best to open a distinct, very focused feature request. It's usually better that way anyway, as the smaller the feature request is, the easier it is to make a point. ---------------------------------------- Feature #18595: Alias `String#-@` as `String#dedup` https://bugs.ruby-lang.org/issues/18595#change-96614 * Author: byroot (Jean Boussier) * Status: Open * Priority: Normal ---------------------------------------- This is a rescoped feature request for https://bugs.ruby-lang.org/issues/16295 ### Rationale [Unary operator have some precedence oddities](https://bugs.ruby-lang.org/issues/16150#note-39) (@headius) This often force to use parentheses, which is awkward and breaks the chaining flow. It's really not obvious what it does. I submitted many pull requests to various open source projects to reduce their memory footprint, and I am constantly asked what it does and I have to point to the `String#-@` documentation. [The last example was 3 days ago](https://github.com/dry-rb/dry-schema/pull/399#issuecomment-1043963073). I believe that `String#dedup` would help users discover this feature, and in projects where 3.2 is the oldest supported version, it would allow for much clearer code. ### Proposal It's all in the title: Alias `String#-@` as `String#dedup`. Or maybe even rename `String#-@` as `String#dedup`, and make `String#-@` the alias? -- https://bugs.ruby-lang.org/ Unsubscribe: