如何解决这个Ruby糖果店的作业?

时间:2017-03-27 01:38:02

标签: ruby class

我在大学上课,要求学生学习三种语言 一个学期。就像一个来自真正古老的语言,如Haskell,另一个应该来自翻译语言。

所以,现在我必须学习Ruby,我需要帮助。让我们说有课有

class Help
@@array = Array.new
@@count = 0
@store
@chocolate
@candy
@store_code
  • 商店是字符串(商店名称)
  • chocolate,candy,store_code是整数(价格和代号)

让我们考虑一下add函数并将其调用两次

def add (s, i, i, i)
    array = [s, i, i, i]
    count += 1
end

store_a = Help.new
store_a.add (A, 20, 1, 100)
store_b = Help.new
store_b.add (B, 50, 1, 100)

无论如何,store_a巧克力价格是20

store_b巧克力价格现在是50

如何在课堂内制作计算巧克力价格平均值的功能? (我为此制作了计数变量,但我不知道我是否需要它。)

1 个答案:

答案 0 :(得分:1)

这可以重构并缩短,也可以使用类似于你在问题中提到的类变量使用" @@",但我的目标是保持基本,这样你才能开始抓住它并慢慢转向更先进的技术和设计:

    class Warehouse
      attr_accessor :products_stores

      def initialize
        @products_stores = []
      end

      def add_product(args)
        @products_stores << args
      end

      def product_price_avg
         avg = 0
         @products_stores.each do |o|
           avg += o[:product].price
         end
         avg / @products_stores.count
      end

    end

    class Store
      attr_accessor :code
      def initialize(code)
        @code = code
      end
    end

    class Chocolate
      attr_accessor :price
      def initialize(price)
        @price = price
      end
    end

    store_a = Store.new(100)
    store_b = Store.new(200)
    cheap_chocolate = Chocolate.new(20)
    expensive_chocolate = Chocolate.new(50)
    warehouse = Warehouse.new
    warehouse.add_product({store: store_a, product: cheap_chocolate})
    warehouse.add_product({store: store_b, product: expensive_chocolate})
    puts warehouse.product_price_avg