New to Ruby and work开发者_如何学Cing on a problem where I'm trying to accept multiple splat arguments in the method. I think I understand why it's giving me the compile error, but I'm not sure how to fix it. Any help with how to use multiple splats in the arguments would be helpful. Thank you in advance for any guidance here.
def find_max_expenses(salary, save_prcnt, *pre_ret_g_rates, *post_ret_g_rates, epsilon)
years = pre_ret_g_rates.count
savings = nest_egg_variable(salary, save_prcnt, pre_ret_g_rates)
savings = savings[-1]
low = 0
high = savings
expenses = (low + high) / 2
# can use the [-1] at the end is equivalent to the code below
remaining_money = post_retirement(savings, post_ret_g_rates, expenses) #[-1]
remaining_money = remaining_money[-1]
while remaining_money > epsilon # the value we want to stay above
if remaining_money > 0
low = expenses
else
high = expenses
end
expenses = (high + low) / 2
remaining_money = post_retirement(savings, post_ret_g_rates, expenses)
p remaining_money = remaining_money[-1]
end
p expenses
end
find_max_expenses(10000, 10, [3, 4, 5, 0, 3], [10, 5, 0, 5, 1], 0.01)
Example of using splat arguments:
def sum(*nums)
sum = 0
nums.each do |num|
sum += num
end
sum
end
puts sum(1,2,3)
Notice how the arguments are specified directly, not inside []
.
If the method defined a second splat argument, one couldn't determine when the first one ends and the second begins.
精彩评论