我如何使用ruby提取并排序存储在另一类的实例变量内部的数组中的一类的实例变量?

问题描述 投票:0回答:1

[虽然了解更多关于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实例,我没有正确提取和排序@contentsCatalogue

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>]

理想情况下,我希望能够在多个实例中根据价格提取和分类产品。我意识到我将需要进一步扩展现有代码,以确保获取最便宜的代码(当数组中有多个对象时),但是我只是尝试从一种基本功能开始,以访问其中的元素。 >

到目前为止,我已经尝试了一些不同的方法,例如sortfirst,但是,我无法超越上述输出[#<Product:0xXXXXXX @name="scissors", @price=8>],并深入研究实例变量。 🤷‍♂️

我需要添加到catalogue.rb中以使test_cheapest_of_one中的catalogue_test.rb通过?

[虽然了解更多关于Ruby的信息,但我现在遇到了麻烦。我正在尝试提取和排序一个类的实例变量的值,该值存储在实例变量内的数组中...

arrays ruby sorting instance instance-variables
1个回答
0
投票

我认为您的测试将使用以下方法定义:

© www.soinside.com 2019 - 2024. All rights reserved.