【发布时间】:2021-11-28 01:28:03
【问题描述】:
我想退回任何便宜的商品,应该退回任何价格低于 300 美元的商品。
这是主类;
class ShoesInventory
def initialize(items)
@items = items
end
def cheap
# this is my solution, but it just print out an array of boolean
@items.map { |item| item[:price] < 30 }
# to be implemented
end
end
这是类的一个实例;
ShoesInventory.new([
{price: 101.00, name: "Nike Air Force 1 Low"}},
{price: 232.00, name: "Jordan 4 Retro"},
{price: 230.99, name: "adidas Yeezy Boost 350 V2"},
{price: 728.00, name: "Nike Dunk Low"}
]).cheap
我希望结果是这样的;
# => [
# {price: 101.00, name: "Nike Air Force 1 Low"}},
# {price: 232.00, name: "Jordan 4 Retro"},
# {price: 230.99, name: "adidas Yeezy Boost 350 V2"},
# ]
Can you guide me ?
【问题讨论】:
-
在这种情况下,您只需将
map替换为select,正如 Drenmi 在他们的回答中指出的那样,但您可能需要花一点时间浏览 Enumerable methods,因为有里面有很多有用的 -
这可能“只是”一个练习,但您不应该将浮点数用于货币值。查看Money gem 以获得更好的选择。
-
@Stefan 如果您使用 Ruby 哈希,因为您的数据存储舍入错误可能是您最不关心的问题...
-
@max 我只是不喜欢看到
230.990000000000009094947017729282379150390625的“价格” :-)
标签: arrays ruby inventory-management ruby-hash