ruby - 找到数组的第二个元素

标签 ruby arrays class instance-methods splat

我不明白这怎么行不通。该程序应该在类 Array 中采用第二个实例方法并返回数组中的第二个对象

class Array
  def second(*arr)
  arr.length <= 1 ? nil : arr[1]
  end
end

#Test cases
Test.assert_equals(Array([1, 2, 3]), 2,) #Getting nil
Test.assert_equals(Array([]), nil) #passes
Test.assert_equals(Array([1]), nil) #passes

我做错了什么?如果我删除类 Array 并在第二个测试它工作正常?

最佳答案

为什么要使用*arr?如果你正在修补 Array,那么使用 self:

class Array
  def second
    self.length <= 1 ? nil : self[1]
  end
end

p [1,2,3].second #=> 2
p [1].second #=> nil
p [].second #=> nil 

关于ruby - 找到数组的第二个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26877729/

相关文章:

ruby-on-rails - Heroku + Rack 重写

ruby - 通过 Watir-Webdriver 访问 Gmail 中的验证链接

ruby-on-rails - 使用触发器进行 Rails 测试

c# - 逐字节比较两个字节数组并返回有区别吗?

javascript - 如何将我的数据转换为 React Native 的 SectionList 的正确格式?

c++ - 安排这门课的最佳方式是什么?

C++ - 是否需要类原型(prototype)?

ruby-on-rails - rails : Resetting form fields with page refresh

c++ - CPP : Mysterious error for array initialization and crash?

python - 如何在Python中创建内置 "object()"的对象?