【发布时间】:2019-10-18 04:56:37
【问题描述】:
我一直在研究一个实验室,希望您构建一个接受散列参数的方法 key_for_min_value。该方法应该遍历散列并返回指向集合中最小值的键。如果调用该方法并传递一个空哈希的参数,它应该返回 nil。
我的问题是,必须迭代两个不同的哈希值才能通过测试。我对如何在我的方法中创建逻辑来验证方法中包含的两个部分有点困惑。我曾考虑为我的循环添加更多逻辑,但我不确定这是否是最简洁的编写方式。任何见解将不胜感激。谢谢!
hash = {:blake => 500, :ashley => 2, :adam => 1}
hash = {:blake => 10, :ashley => 50, :adam => 17}
def key_for_min_value(name_hash)
empty_hash = nil
name_hash.collect do |name, value|
if value <= 1
return name
end
end
empty_hash
end
【问题讨论】:
-
你的函数没有找到最小值;它正在查找小于或等于
1的值。你不需要更多逻辑,你需要不同逻辑。#collect是一个错误的工具。请查看#min_by,或者如果您认为这是作弊,请查看#inject。 -
所以实验室不允许我使用 min_by 和 sort_by。
-
如果我使用inject vs collect,我很确定我不需要有一个循环,对吗?或者至少没有一个有算术的
-
#collect和#inject都是循环;他们只是做不同的事情。 -
我很抱歉。我的目标不是将代码提供给我;我真的很想明白这一点!
标签: ruby