最後の文字で単語の配列を並べ替えることを試みています。最後の文字で単語の配列を並べ替える
def array_sort_by_last_letter_of_word(array)
list = array[-1,1]
list.sort { |a,b| b <=> a }
end
puts array_sort_by_last_letter_of_word ['sky', 'puma', 'maker']
出力はちょうど"maker"
です。
最後の文字で単語の配列を並べ替えることを試みています。最後の文字で単語の配列を並べ替える
def array_sort_by_last_letter_of_word(array)
list = array[-1,1]
list.sort { |a,b| b <=> a }
end
puts array_sort_by_last_letter_of_word ['sky', 'puma', 'maker']
出力はちょうど"maker"
です。
def array_sort_by_last_letter_of_word(array)
array.sort_by { |word| word[-1] }
end
(String#last
を使用して)Railsのバージョン:
def array_sort_by_last_letter_of_word(array)
array.sort_by(&:last)
end
乾杯Andrey。ありがとうございました。 – AltBrian
@AltBrianいいえprobs! –
AltBrian、Railsでこれを行う場合は、 'word.last'を使うことができます:)。 @Andrey普通のRubyで 'String#first'、' String#last'を取得すると思いますか? –
アンドレイの答えは間違いなくこれを行う方法です。しかし、あなたのコードで何が問題になっているのかを理解するには:
list = array[-1,1]
この構文は、配列のサブ配列を取得するためのものです。パターンはarray[start, length]
で、インデックスstart
から始まり、長さがlength
である配列を取得します。したがって、長さが1
の-1
(最後のインデックスを意味する)から始まる配列、つまり配列の最後の要素だけを要求しています。だからlast = ['maker']
。そのため、あなたのソートメソッドはその要素を返すだけです。
あなたがの内側にもa
ニーズがそうでない場合は、アレイがでソートされ、b
の左されることに注意して文字列が
array.sort { |a,b| a[-1] <=> b[-1] }
を比較する方法を決定するものであるソートブロックを、最後の文字
を取得したいです逆。
'sort'は' sort_by'よりも汎用性がありますが、多くの場合、 'sort_by'で十分であり、' sort'よりはるかに高速です。 – Amadan
問題を最もよく解決する回答を選択して受け入れてください。このようにして、あなたの問題が解決されたことをコミュニティに知らせるとともに、時間を費やしてくれた人たちの努力に報いることもできます。 –