开发者

Ruby 1.9.2 - multiple splat argument issue

开发者 https://www.devze.com 2023-02-16 08:41 出处:网络
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

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消