我尝试在这里寻找类似的案例,但没有成功。
我希望用户首先介绍一定数量的金钱,然后他需要陈述一些天:" 30"," 45"或" 60",而不是其他选项,而不是这些,最后,该程序将乘以固定数字的金额。此数字取决于用户选择的天数。如果他选择30,"金额* 1.0219&#34 ;; 45:"金额* 1.0336&#34 ;; 60:"金额* 1.0467"。
到目前为止,这是我写的代码:
puts "Indicate money to invest"
money_invested = gets.to_i
puts "Indicate time of investment"
time_investment = gets.to_i
investment_calculation = { 30 => 1.0219, 45 => 1.0336, 60 => 1.0467 }
# will be `nil` if not one of the defined ones
我知道哈希内部已经发生了一些可怕的事情,所以我决定停在那里。我不确定=>
是否意味着我想要的意思,即:相乘。
答案 0 :(得分:1)
您可以存储“固定值”'在哈希中并根据给定的用户输入访问它们。 E.g:
fixed_values = { "30" => 1.0219,
"45" => 1.0336,
"60" => 1.0467 }
然后你必须将它与*
运算符相乘:
investment_calculation = money_invested * fixed_values[time_investment]
当然,您应该检查哈希中是否有用户输入的天数,以避免错误或不当行为。
答案 1 :(得分:0)
即使您的问题非常基础,但写得很好并且易于理解。干得好!
现在跟着我:哈希,在其他一些非Ruby语言中也被称为“地图”,是一种数据结构,它允许我们将键与值相关联。散列中的键等同于数组中的索引:数组的主要目的是通过使用索引来存储和访问元素,散列的主要目的是按键存储和访问元素。与通用键值数据结构的其他天真实现相比,哈希真的快。
在此示例中,您将密钥30
与值1.0219
相关联。您可以使用irb
命令在控制台中评估哈希的行为:
> investment_calculation = { 30 => 1.0219, 45 => 1.0336, 60 => 1.0467 }
=> {30=>1.0219, 45=>1.0336, 60=>1.0467}
> investment_calculation[30]
=> 1.0219
> investment_calculation[45]
=> 1.0336
> investment_calculation[100]
=> nil
相比之下,您可以使用具有稀疏值的数组解决问题,即将许多值设置为0
/ nil
,但由于大部分内存用于什么都不存储。