Я получаю сообщение об ошибке при попытке использовать оператор космического корабля с не альфа-цифровыми символами в функции сортировки.Ruby - оператор Spaceship не работает в блоке для .sort
word = "out-classed"
letters = word.downcase.split('')
letters.sort! do |x, y|
if y < 'a'
next
else
value = x <=> y
end
end
Я получаю ArgumentError: comparison of String with String failed
, и я почти уверен, что это происходит с оператором космического корабля, а не сравнение <.
Интересная часть состоит в том, что, когда я делаю такое же сравнение в irb вне контекста блока сортировки, сравнение работает. Он также работает, когда переменная слова состоит только из букв.
Может кто-нибудь помочь мне понять, почему это не работает в этом конкретном контексте?
Это хороший вопрос, потому что важно, чтобы вы и другие понимали, почему вы не можете делать то, что вы хотели бы сделать. –