[ruby-core:119502] [Ruby master Feature#20793] Allow Multiple Arguments for the .is_a? Method

Issue #20793 has been reported by artemb (Artem Borodkin). ---------------------------------------- Feature #20793: Allow Multiple Arguments for the .is_a? Method https://bugs.ruby-lang.org/issues/20793 * Author: artemb (Artem Borodkin) * Status: Open ---------------------------------------- I propose allowing multiple arguments to be passed to the .is_a? Method imply "OR" semantics: ``` ruby name.is_a? String, Symbol ``` Currently, we need to write the following to achieve the same functionality: ``` ruby [String, Symbol].include?(name.class) ``` -- https://bugs.ruby-lang.org/

Issue #20793 has been updated by nobu (Nobuyoshi Nakada). Also `kind_of?` method? ---------------------------------------- Feature #20793: Allow Multiple Arguments for the .is_a? Method https://bugs.ruby-lang.org/issues/20793#change-110118 * Author: artemb (Artem Borodkin) * Status: Open ---------------------------------------- I propose allowing multiple arguments to be passed to the .is_a? Method imply "OR" semantics: ``` ruby name.is_a? String, Symbol ``` Currently, we need to write the following to achieve the same functionality: ``` ruby [String, Symbol].include?(name.class) ``` -- https://bugs.ruby-lang.org/

Issue #20793 has been updated by Eregon (Benoit Daloze). I think pattern matching can/should be used here instead of making `is_a?` more complicated: ``` irb(main):001:0> name = :abc => :abc irb(main):002:0> name in String | Symbol => true irb(main):003:0> name = 42 => 42 irb(main):004:0> name in String | Symbol => false ``` `is_a?` is deeply optimized so accepting multiple arguments would likely make it slower or complicate things significantly. ---------------------------------------- Feature #20793: Allow Multiple Arguments for the .is_a? Method https://bugs.ruby-lang.org/issues/20793#change-110119 * Author: artemb (Artem Borodkin) * Status: Open ---------------------------------------- I propose allowing multiple arguments to be passed to the .is_a? Method imply "OR" semantics: ``` ruby name.is_a? String, Symbol ``` Currently, we need to write the following to achieve the same functionality: ``` ruby [String, Symbol].include?(name.class) ``` -- https://bugs.ruby-lang.org/

Issue #20793 has been updated by artemb (Artem Borodkin). Eregon (Benoit Daloze) wrote in #note-2:
I think pattern matching should be used here instead Very nice, thank you!
If kind_of? (and alias is_a?) has a strong implementation optimization, I agree that this is not so important enhancement. ---------------------------------------- Feature #20793: Allow Multiple Arguments for the .is_a? Method https://bugs.ruby-lang.org/issues/20793#change-110120 * Author: artemb (Artem Borodkin) * Status: Open ---------------------------------------- I propose allowing multiple arguments to be passed to the .is_a? Method imply "OR" semantics: ``` ruby name.is_a? String, Symbol ``` Currently, we need to write the following to achieve the same functionality: ``` ruby [String, Symbol].include?(name.class) ``` -- https://bugs.ruby-lang.org/

Issue #20793 has been updated by matz (Yukihiro Matsumoto). Status changed from Open to Rejected `is_a?(A, B)` can be read as `is_a?(A) || is_a?(B)` or `is_a?(A) && is_a?(B)`. This ambiguity might lead to less readability. Matz. ---------------------------------------- Feature #20793: Allow Multiple Arguments for the .is_a? Method https://bugs.ruby-lang.org/issues/20793#change-110479 * Author: artemb (Artem Borodkin) * Status: Rejected ---------------------------------------- I propose allowing multiple arguments to be passed to the .is_a? Method imply "OR" semantics: ``` ruby name.is_a? String, Symbol ``` Currently, we need to write the following to achieve the same functionality: ``` ruby [String, Symbol].include?(name.class) ``` -- https://bugs.ruby-lang.org/
participants (4)
-
artemb (Artem Borodkin)
-
Eregon (Benoit Daloze)
-
matz (Yukihiro Matsumoto)
-
nobu (Nobuyoshi Nakada)