Да, Накилон прав, вы должны знать, как работает оператор triqual === над объектом, указанным в предложении when
.В Ruby
case item
when MyClass
...
when Array
...
when String
...
действительно
if MyClass === item
...
elsif Array === item
...
elsif String === item
...
. Поймите, что в этом случае вызывается трехзначный метод (например, MyClass.===(item)
), и этот метод может быть определен так, чтобы делать все, что вы хотите,и тогда вы можете использовать оператор case с precisionw