Ruby 1.9.2 - проблема с несколькими аргументами - PullRequest
0 голосов
/ 11 марта 2011

Новичок в Ruby и работа над проблемой, в которой я пытаюсь принять несколько аргументов 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)

1 Ответ

7 голосов
/ 11 марта 2011

Пример использования аргументов splat:

def sum(*nums)
  sum = 0 
  nums.each do |num|
    sum += num 
  end 
  sum 
end

puts sum(1,2,3)

Обратите внимание, как аргументы указываются напрямую, а не внутри [].

Если метод определил второй аргумент splat, невозможно определить, когда заканчивается первый и начинается второй.

...