我有一个带有实例变量s
的s 数组:Tile
@type
class Tile
Types = ["l", "w", "r"]
def initialize(type)
@type = type
end
end
s = []
20.times { s << Tile.new(Tile::Types.sample)}
我如何得到每个Tile
?@type
如何只返回具有特定对象的对象@type
?
我有一个带有实例变量s
的s 数组:Tile
@type
class Tile
Types = ["l", "w", "r"]
def initialize(type)
@type = type
end
end
s = []
20.times { s << Tile.new(Tile::Types.sample)}
我如何得到每个Tile
?@type
如何只返回具有特定对象的对象@type
?
如果你想得到一个包含每个类型属性的数组,你首先需要创建至少一个阅读器@type
:
class Tile
attr_reader :type
Types = ["l", "w", "r"]
def initialize(type)
@type = type
end
end
然后使用Array#map
:
type_attribute_array = s.map(&:type)
#or, in longer form
type_attribute_array = s.map{|t| t.type)
如果您想根据 Tile 对象的@type
值过滤它们,Array#select
是您的朋友:
filtered_type_array = s.select{|t| t.type == 'some_value'}
这是文档Array
:Ruby Array
您可以to_s
在您的 Tile 类中覆盖,从中返回类型,然后通过调用迭代您的数组s
以打印类型<tile_object>.to_s
class Tile
Types = ["l", "w", "r"]
def initialize(type)
@type = type
end
def to_s
@type
end
end
s = []
20.times { s << Tile.new(Tile::Types.sample)}
s.each {|tile| puts tile.to_s}