From: hanmac@... Date: 2018-01-23T13:36:52+00:00 Subject: [ruby-core:84989] [Ruby trunk Feature#14336] Create new method String#symbol? and deprecate Symbol class Issue #14336 has been updated by Hanmac (Hans Mackowiak). rosenfeld (Rodrigo Rosenfeld Rosas) wrote: > > why are you guys not have a problem with that h[0] != h[0.0] ? > > Aren't you exaggerating? When did you ever need to use a non integer number as a hash key? I never did and I never saw a single code base using non integer numeric values as hash keys in all those years programming in Ruby or whatever other language. That argument makes zero sense. what if you have hash data for a color gradient? then you have `{ 0 => 'start color', 0.5 => 'step color', 1.0 => 'end color'}` if you now would have 1 instead of 1.0 then it wouldn't be the same and your program would fail > That argument makes zero sense. isn't it cool how much "your" argument makes sense? saying that some argument makes no sense is the perfect way to silence other opinions would be sad if someone would do that to you, ne? ---------------------------------------- Feature #14336: Create new method String#symbol? and deprecate Symbol class https://bugs.ruby-lang.org/issues/14336#change-69696 * Author: dsferreira (Daniel Ferreira) * Status: Rejected * Priority: Normal * Assignee: * Target version: ---------------------------------------- From the discussions on the three previous issues related to the String vs Symbol subject ([5964](https://bugs.ruby-lang.org/issues/5964), [7792](https://bugs.ruby-lang.org/issues/7792), [14277](https://bugs.ruby-lang.org/issues/14277)) there are some conclusions we can assume: * Current String vs Symbol is not the ideal scenario. See: Matz and Koichi comments. * Current philosophy is to use Symbols as identifiers and Strings when strings are needed. * Current situation is that Symbols are being used in many code bases as strings except for strings that really need the String methods. * Current situation is that we are designing APIs to handle both String and Symbol inputs forcing an overhead of API development. I propose the deprecation of `Symbol` class and the introduction of `String#symbol?`. ```ruby foo = :foo foo.class # => String foo.symbol? # => true bar = "bar" bar.class # => String bar.symbol? # => false ``` For backwards compatibility transition path I propose: ```ruby class Symbol def self.===(var) warn ("Warning message regarding deprecated class") if var.class == Symbol true elsif var.class == String && var.symbol? true else false end end end class String def is_a?(klass) case klass when String true when Symbol self.symbol? else false end end end ``` -- https://bugs.ruby-lang.org/ Unsubscribe: