对于奇怪的措辞,我很抱歉。我不知道你叫什么。我有这个数组:
[#<Item:0x007faeea066508 @name="Backpack", @exam="Not much here... just a backpack">]
这是一个库存数组。用户将键入类似“检查背包”的内容,它将返回元素的@exam。你怎么会只知道@name?谢谢!
答案 0 :(得分:1)
你可能想要选择一个块(假设你的Item类响应.name和.exam:
items = [#<Item:0x007faeea066508 @name="Backpack", @exam="Not much here... just a backpack">]
item = items.select {|i| i.name =~ /backpack/i }
puts item.exam
答案 1 :(得分:1)
这就是你所拥有的:
class Item
# accessors for @name and @exam possibly defined here
def initialize(name, exam)
@name = name
@exam = exam
end
# methods possibly defined here
end
item = Item.new("Backpack", "Just a backpack")
#=> #<Item:0x0000010201dda0 @name="Backpack", @exam="Just a backpack">
所以你有一个数组a
有一个元素,类Item
的实例,实例变量@name
和@exam
的值为“Backpack”和“Just”一个背包“,分别是:
a = [item]
#=> [#<Item:0x0000010201dda0 @name="Backpack", @exam="Just a backpack">]
您可以使用Object#instance_variable_get来检索实例变量@name
和@exam
的值,我将将其存储在本地变量name
和exam
中:
name = a.first.instance_variable_get(:@name) #=> "Backpack"
exam = a.first.instance_variable_get(:@exam) #=> "Just a backpack"
现在您已拥有这些变量的值,您可以随意使用它们。
答案 2 :(得分:0)
这是我的代码:
articles = ArticleType.all
我的结果:
[#<ArticleType id: 1, name: "News", slug: "news">, #<ArticleType id: 2, name: "Articles", slug: "articles">]
获取第一个元素的名称值:
articles[0].name
=> "News"
获取数组的名称值:
ArticleType.all.map(&:name)
获取包含'N'的元素:
ArticleType.all.map { |x| puts x.name if x.name.include?('N') }
=> News
我希望它可以帮到你!
答案 3 :(得分:0)
您可以执行以下操作: -
user_typed_string = "examine backpack"
items = [#<Item:0x007faeea066508 @name="Backpack", @exam="Not much here... just a backpack">]
item = items.select {|i| user_typed_string.include?(i.name) }.last
exam = item.exam unless item.nil?