Quelle est la différence entre
case item.class
when MyClass
# do something here
when Array
# do something different here
when String
# do a third thing
end
et
case item.class
when MyClass.class
# do something here
when Array.class
# do something different here
when String.class
# do a third thing
end
Pour une raison quelconque, le premier fonctionne parfois et pas le second, et d'autres fois, le second fonctionne et pas le premier. Pourquoi ? Laquelle est la "bonne" façon de procéder ?
2 votes
String est une classe. La classe d'une classe est Class.
1 votes
Notez que
MyClass === obj
utilise le Module#=== pour vérifier siobj
est une instance deMyClass
.