ibp*_*pix 1 ruby ruby-on-rails
我有一个对象数组,想要获取第 1 项到第 4 项,但take不接受范围。
user.addresses.take(1...4)
Run Code Online (Sandbox Code Playgroud)
有什么办法可以达到这个目的呢?在 Rails 中,如果添加了一些 ActiveSupport,我也可以使用它。
Ruby 的take方法接受单个整数值来表示要采用的元素数量。调用[0, 1, 2, 3, 4].take(4)将返回数组的第 0 个、第 1 个、第 2 个和第 3 个元素,或者[0, 1, 2, 3].
如果想跳过第0个元素,可以考虑slice。调用[0, 1, 2, 3, 4].slice(1..)就会返回[1, 2, 3, 4]。您可以限制取子集的范围。您还可以用作[]数组上的方法,就像 的slice别名一样[]。无限范围语法x..是在 Ruby 2.6 中引入的。在 Ruby 的早期版本中,您可以使用以下命令来完成此操作1..-1。