Новое для Ruby и работа над проблемой, когда я пытаюсь принять несколько аргументов splat в методе. Я думаю, я понимаю, почему он дает мне ошибку компиляции, но я не уверен, как это исправить. Любая помощь в использовании нескольких символов в аргументах будет полезна. Заранее благодарю вас за любые рекомендации.Ruby 1.9.2 - проблема с множественным аргументом splat
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)
Поставив ваши аргументы о символах, обычные аргументы, например. удаление кода *, вы должны работать отлично, как вы его используете сейчас. Когда вы вызываете свой метод с массивом, нет необходимости в аргументах splat. Кроме того, два аргумента splat не имеют никакого смысла, потому что нет способа определить, когда начнутся первые и начинается другое. – gnab