Techioz Blog

Ruby 配列の最後の要素を除くすべての要素

概要

Ruby 配列があるとします。

a = [1, 2, 3, 4]

最初の項目以外のすべてが必要な場合は、.drop(1) を書くことができます。これは素晴らしいことです。でも最後の1つ以外全部欲しいならこうするしかない

a[0..-2]   # or
a[0...-1]

しかし、どちらも、drop を使用するほどクリーンには見えません。他に不足している組み込みの方法はありますか?

解決策

多分…

a = t               # => [1, 2, 3, 4]
a.first a.size - 1  # => [1, 2, 3]

または

a.take 3

または

a.first 3

または

a.pop

これは最後のものを返し、その前のすべての配列を残します

または、夕食のためにコンピュータを動作させます。

a.reverse.drop(1).reverse

または

class Array
  def clip n=1
    take size - n
  end
end
a          # => [1, 2, 3, 4]
a.clip     # => [1, 2, 3]
a = a + a  # => [1, 2, 3, 4, 1, 2, 3, 4]
a.clip 2   # => [1, 2, 3, 4, 1, 2]