🐥

[Ruby] reverseを使わずreverseしたい

2023/12/14に公開

RubyのArray#reverseを使わず、要素を逆順に並べた配列を作成すべく書いてみました。

require 'minitest/autorun'

class MyReverse
  def self.awesome_reverse(string)
    new_array = []
    string.each_char do |letter|
      new_array.unshift(letter)
    end
    new_array.join
  end
end

class MyReverseTest < Minitest::Test
  def test_run_reverse
    assert_equal 'cba', MyReverse.awesome_reverse('abc')
    assert_equal 'fdsa', MyReverse.awesome_reverse('asdf')
  end
end

each_charで文字列を1つずつ取り出し、unshiftで配列の先頭に要素を追加しています。そして最後に配列new_arrayjoinしています。

Array#prepend (Ruby 3.2 リファレンスマニュアル)

余談ですが、英語の意味として、「string」は、0個以上の文字が連なったものを指します。例えば、「Hello, world!」は「string」です。
「letter」は、1文字のことだけを指します。例えば、「Hello, world!」の「H」は「letter」です。

Discussion