ruby - 如何创建一个用字符串和整数属性初始化的 ruby 类和数组?
问题描述
我正在尝试创建一个 ruby 类,该类使用具有 和 属性的产品数组进行name[String]
初始化rating[Integer]
。我有一段时间没有直接做红宝石了,我很难过。
我希望这个类的实例能够
- 以最高评价的产品回应
- 确定所有产品的平均评分
- 将 10 个评价最高的产品列表打印到 STDOUT
目标也是编写脚本,但我记得如何做到这一点。只需要关于如何设置课程的建议。
解决方案
您应该能够使用initialize
将分配提供的产品数组的方法设置一个类:
class ProductStats
def initialize(products)
@products = products
end
end
从那里,您可以在类上创建实例方法,以获得最高评分的产品、平均评分以及您需要的任何其他方法:
class ProductStats
def initialize(products)
@products = products
end
def highest_rated
@products.max_by { |product| product[:rating] }
end
end
然后,您可以使用您的产品初始化一个实例:
product_stats = ProductStats.new([
{ name: "Socks", rating: 1 },
{ name: "Jacket", rating: 2 },
{ name: "Hat", rating: 3 }
])
product_stats.highest_rated
# => { :name=>"Hat", :rating=>3 }
出于演示目的,这假定“产品”是一个简单的 Hash 对象,但如果产品是不同类(例如Product
或类似)的实例,则适用相同的核心原则。
推荐阅读
- azure - Azure CosmosDB:文档 ID 中的非法字符
- postgresql - 为什么数据库连接会自动关闭?
- android - 尝试在销毁时重新启动应用程序并使其保持运行
- ruby-on-rails - 如何显示从 Mongoid::GridFs 返回的图像
- python - 了解 python 'for' 关键字的不同用途
- c# - 实体框架核心多个外键同表错误
- html - 使用 html js 和 css 制作一个具有 5 个电子的原子预加载器
- node.js - 是否可以在 nodejs 应用程序中创建完全独立的模块?
- reactjs - React.JS 中的无效 Hook 调用
- c# - 用户控件执行时未找到其他库