2015-03-14 5 views
-1

Проблемы с моим синтаксисом пробовали несколько вещей, но все еще не поняли его. Что я не понимаю? БлагодаряКак отсортировать массив по алфавиту?

change = ['cents', 'pennies', 'coins', 'dimes', 'pence', 'quarters'] 
change.sort {|anythinghere| a <=> b puts "Ascending #{anythinghere}" } 
+0

'Возникли проблемы с моим синтаксисом' - после этого вы должны указать период. Тогда вы должны начать новое предложение с капиталом. У вас должна быть запятая перед 'but'. – sawa

+0

Спасибо! как я могу заставить его отображать в терминале? – Stacca

ответ

4

Почему просто не change.sort? Array#sort без блока по умолчанию для сортировки по возрастанию, которая является блок { |a, b| a <=> b }:

sorted = change.sort # Ascending sort 
sorted = change.sort { |a, b| a <=> b } # Same thing! 
sorted 
# => ["cents", "coins", "dimes", "pence", "pennies", "quarters"] 

Примечание Этот блок должен составлять от двух переменных вы сравниваете, в отличие от блока, который вы написали в своем вопросе. Включение настраиваемого компаратора необходимо только в том случае, если вы хотите изменить способ сортировки элементов, например. если вы хотите, чтобы отсортировать в порядке убывания: { |a, b| b <=> a }

Если вы хотите напечатать текстовое представление массива, используйте

и если вы хотите, чтобы отсортировать в месте (не создавать новую arrray) использовать sort!

+0

Спасибо. Есть ли способ показать его? – Stacca

+0

Если вы находитесь в сценарии и хотите вывести текстовое представление массива, используйте 'puts' после того, как вы сохранили отсортированный массив, т. Е.' Puts sorted'. – jayelm

+0

Благодарим за помощь! – Stacca

-1

Используйте sort_by метод:

change = ['cents', 'pennies', 'coins', 'dimes', 'pence', 'quarters'] 
change.sort_by { |change| change } 
# => ["cents", "coins", "dimes", "pence", "pennies", "quarters"] 
+0

Если вы хотите изменить свой текущий массив, используйте 'sort_by!' –

+0

Почему вы рекомендуете 'sort_by' (с блоком) над' sort'? Во-первых, это будет не так быстро. –