【发布时间】:2014-05-23 15:11:55
【问题描述】:
class New_Class
def initialize
@array = ['1A','2A','1B','2C']
end
def remove_letters
@array.map do |rmv|
rmv.sub /([0-9])([A-Z])/, '\1'
end
end
def show_array
@array.each do |element|
puts element
end
end
end
array = New_Class.new
new_array = array.remove_letters
puts new_array.class #=> Array
new_array.each do |element|
puts element #=>1,2,1,2
end
array.show_array #=>1A,2A,1B,2C
new_array.show_array #=>Undefined method error since it's an object of type Array not New_Class
如何使 new_array 成为 New_Class 类型的对象而不是 Array? 这不起作用:
new_array = New_Class.new
new_array = array.remove_letters
仍然说 new_array 是 Array 类型。
我玩弄了 clone 和 dup,但也无法让它以这种方式工作。谢谢!
【问题讨论】:
-
旁注,Ruby 的惯例是使用 2 空格缩进,而不是 4 空格。
-
你到底想做什么?这一切是为了什么?
-
我有一个自定义类的数组,可以在整个程序中更改长度。在任何时候,我都需要从该数组派生一个数组,但没有字母。然后,我需要在使用所述类的方法时将派生数组与该自定义类的其他数组进行比较。我真正在做的事情稍微复杂一些,但与我的示例中的逻辑相同。
标签: ruby arrays class object inheritance