如何在Ruby中创建自己的数组

时间:2015-05-19 20:10:14

标签: ruby iterator

a = MyArray.new(3){ |i| (i+1).to_s }
a << 1
puts " #{a.size} #{a[1]} #{a.first} "
b = MyArray.new; b.push("a").push("b")
a += b

和我自己的a.ok(“foo”)自己的变量a.nowy等。

如何使用我自己的变量和方法以及数组的所有方法创建数组类:  []每种.push删除....

P.S。是否只能采用数组中的specyfic元素?例如只有“字符串”或只有整数? 重新定义初始化?

2 个答案:

答案 0 :(得分:0)

试试这个,但请先阅读:http://words.steveklabnik.com/beware-subclassing-ruby-core-classes

class MyClass < Array

  def my_new_method
    # do fancy array tricks here
  end

end

答案 1 :(得分:0)

继承!

class MyClass < Array
  #implement functionality
  def initialize(args)
    super()
  end

  def custom_push(element)
    self.push(element)
  end
end

您可以在类中创建新方法,并覆盖Array类中已存在的方法。

值得一提的是,eachsort不是Array类的方法,它们是Enumerable模块Array的一部分包括。这有点挑剔,但知道很重要。