【问题标题】:How to tackle this Ruby candy store homework?如何解决这个 Ruby 糖果店的作业?
【发布时间】:2017-03-27 01:38:02
【问题描述】:

我在大学有一门课,要求学生学习三种语言 一学期。就像一个来自真正古老的语言(例如 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

如何在类中创建一个计算巧克力平均价格的函数? (我为此设置了 count 变量,但不知道是否需要)。

【问题讨论】:

  • “非常古老的语言,例如 haskell” - 哈哈,Haskell 创建于 1990 年,比 Ruby 早 3 年。
  • 欢迎来到 Stack Overflow。请阅读“How do I ask and answer homework questions?”。
  • 嗨哥特萝莉。感谢您想发布您的解决方案。为此,请在下面创建一个自我回答,以便保留问题。这意味着问题不会被答案覆盖,以便未来的读者可能仍然理解它。
  • 投反对票,见上文。如果在下面添加答案,将取消投票 - 联系我 @halfer。谢谢。

标签: ruby class


【解决方案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

【讨论】:

  • def add_product(args) @products_stores
  • 我编辑了代码并删除了一些冗余,对此感到抱歉。 @products_stores 是一个数组,因此在该行中,我们将包含产品和商店的哈希添加到数组中。
猜你喜欢
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 2011-04-30
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
相关资源
最近更新 更多