[虽然了解更多关于Ruby的信息,但我现在遇到了麻烦。我正在尝试提取和排序一个类的实例变量的值,该值存储在另一个类的实例变量内的数组中。我似乎只能抓住类本身的实例,而不是类中的特定实例变量。
下面是两个类。
product.rb
class Product
attr_reader :name,
:price
def initialize(name, price)
@name = name
@price = price
end
end
catalogue.rb
class Catalogue
attr_reader :contents
def initialize
@contents = []
end
def cheapest
@contents.product.first
end
def <<(product)
@contents << product
end
end
以下测试证实,对于@name
实例中存储在@price
中的Product
实例,我没有正确提取和排序@contents
或Catalogue
。
catalogue_test.rb
gem 'minitest', '~> 5.2'
require 'minitest/autorun'
require 'minitest/pride'
require 'catalogue'
require 'product'
class CatalogueTest < Minitest::Test
def test_cheapest_of_one
catalogue = Catalogue.new
catalogue << Product.new('scissors', 8)
assert_equal 'scissors', catalogue.cheapest
end
end
这是失败的地方:
Failure:
CatalogueTest#test_cheapest_of_one [catalogue_test.rb:16]:
--- expected
+++ actual
@@ -1 +1 @@
-"scissors"
+[#<Product:0xXXXXXX @name="scissors", @price=8>]
理想情况下,我希望能够在多个实例中根据价格提取和分类产品。我意识到我将需要进一步扩展现有代码,以确保获取最便宜的代码(当数组中有多个对象时),但是我只是尝试从一种基本功能开始,以访问其中的元素。 >
到目前为止,我已经尝试了一些不同的方法,例如sort
和first
,但是,我无法超越上述输出[#<Product:0xXXXXXX @name="scissors", @price=8>]
,并深入研究实例变量。 🤷♂️
我需要添加到catalogue.rb
中以使test_cheapest_of_one
中的catalogue_test.rb
通过?
[虽然了解更多关于Ruby的信息,但我现在遇到了麻烦。我正在尝试提取和排序一个类的实例变量的值,该值存储在实例变量内的数组中...
我认为您的测试将使用以下方法定义: