Hello,
when I’m running this programm
a1 = (1…150000).to_a
def splat_test(*args)
puts args.size
end
splat_test(*a1)
I get a SystemStackError exception.
My setup:
Arch Linux
rvm ruby 1.9.2-p0 (also tried with 1.9.2-p180)
Can anyone reproduce this behavior or is this a problem with my ruby
install?
PS: I hope this is the right place to ask this question, if not I’m
sorry.
Greetings
Gunther
On 03/04/2011 03:40 AM, Gunther D. wrote:
sorry.
Greetings
Gunther
You are trying to pass in 150,000 arguments to a method. Surprisingly,
this did work for me on 1.8.7-p302. However, 1.9 has very different
internals. This is a complete guess, but it may be trying to push all of
those arguments onto the stack, giving the resulting error.
-Justin
Am 04.03.2011 12:48, schrieb Justin C.:
You are trying to pass in 150,000 arguments to a method. Surprisingly,
this did work for me on 1.8.7-p302. However, 1.9 has very different
internals. This is a complete guess, but it may be trying to push all
of those arguments onto the stack, giving the resulting error.
-Justin
So, you think there is a limit to the number of method arguments (at
least in 1.9)?
I came across this problem, when I tried some different approaches to
convert an array to a hash (inspired by
Exposing Gotchas: Fun with ruby arrays, hashes and benchmarking).
At least, the splat isn’t necessary in this case.
-Gunther