Hi All,
C:\family\ruby>cat test.rb
def f(command_here)
#{command_here}
end
a = { “Local copy”=>“copy test.txt test.txt2” }
require ‘benchmark’
Benchmark.bmbm do |x|
a.each do |k,v|
x.report(k) { f v }
end
end
C:\family\ruby>ruby test.rb
c:/ruby/lib/ruby/1.8/benchmark.rb:334:in concat': can't modify frozen string (T ypeError) from c:/ruby/lib/ruby/1.8/benchmark.rb:334:in
report’
from test.rb:12
from test.rb:11:in each' from test.rb:11 from c:/ruby/lib/ruby/1.8/benchmark.rb:250:in
bmbm’
from test.rb:10
C:\family\ruby>
if i comment out line 334 in benchmark.rb like so,
#label.concat ' '
It works.
It also works for the ff cases
x.report(k) { f v }
x.report() { f v }
x.report("") { f v }
x.report(“test”) { f v }
What is the relevance of line 334 in benchmark.rb?
If the line is important, how can I fix my program so I can pass a var
in x.report?
thank you and kind regards -botp
Peña wrote:
x.report(k) { f v }
from c:/ruby/lib/ruby/1.8/benchmark.rb:250:in `bmbm'
x.report() { f v }
x.report("") { f v }
x.report(“test”) { f v }
What is the relevance of line 334 in benchmark.rb?
If the line is important, how can I fix my program so I can pass a var in x.report?
thank you and kind regards -botp
A quick workaround would be to use k.dup:
x.report(k.dup) { f v }
Apparently, benchmark is being bad and munging its inputs (and falling
down when one of them happens to be frozen because it is also a hash
key).
From: Joel VanderWerf [mailto:[email protected]] :
A quick workaround would be to use k.dup:
x.report(k.dup) { f v }
brilliant insight. I never even tested that, thinking k.dup would just
be another var/object. And besides, it does not even look *right
Apparently, benchmark is being bad and munging its inputs
(and falling
down when one of them happens to be frozen because it is also
a hash key).
it is really weird.
thank you and kind regards -botp