Джереми и Коди уже ответили правильно. Просто другой взгляд:
Ваш тестовый оператор для i == 0. Это сравнение возвращает true или false.
Итак, когда вы проверяете на true, ваш код может работать:
[0,1,2,3 ].each{|i|
print "Test #{i}. Hit: "
case true
when i == 0 then puts "Spades"
when i == 1 then puts "Hearts"
when i == 2 then puts "Diamonds"
when i == 3 then puts "Clubs"
end
}
Пожалуйста, не используйте такой код. Это может сработать, но это чепуха. Используйте код, который уже опубликовали Джереми и Коди:
[0,1,2,3 ].each{|i|
print "Test #{i}. Hit: "
case i
when 0 then puts "Spades"
when 1 then puts "Hearts"
when 2 then puts "Diamonds"
when 3 then puts "Clubs"
end
}