Unexpected output in a metaprogramming application

Hi,

I putting together examples I might use in teaching an elementary Ruby
seminar. for the moment, I like to code examples inside a method that
displays both the code and the result of the code’s execution.

I pasted both the code and the output presented by running the code
under SciTE at http://www.pastie.org/561156.

My problem is the spurious final line of output from the show method:
“1256921” from Example 4. I like to learn why that’s generated so
that I can eliminate it. I repeated the Example 4 code out of the
“show” context, and it executed as I expected, i.e. no “1256921” ws
generated.

Any ideas?

Thanks in Advance,
Richard

On Tue, Jul 28, 2009 at 12:15 PM,
RichardOnRails[email protected] wrote:

“1256921” from Example 4. I like to learn why that’s generated so
that I can eliminate it. I repeated the Example 4 code out of the
“show” context, and it executed as I expected, i.e. no “1256921” ws
generated.

Any ideas?

Thanks in Advance,
Richard

I don’t know if this totally fixes your problem, but take a look at
this.

def show(stmt)
puts stmt
puts "=> "
eval(stmt).to_s # Remove the puts
puts
end

Harry

Harry

I do not use eval so I can not tell you much about it.
And I don’t have time to go through your code carefully right now.
But, do you need #to_s ?

def show(stmt)
puts stmt
puts "=> "
eval(stmt) #######
puts
end

Harry

On Mon, Jul 27, 2009 at 11:15 PM,
RichardOnRails[email protected] wrote:

“1256921” from Example 4. I like to learn why that’s generated so
that I can eliminate it. I repeated the Example 4 code out of the
“show” context, and it executed as I expected, i.e. no “1256921” ws
generated.

this is because the return value of your eval() code is the last
statement executed, which is Array#each

[1,2,3].each { }.to_s
=> “123”

On Jul 28, 2:24 am, Harry K. [email protected] wrote:

Harry


A Look into Japanese Ruby List in Englishhttp://www.kakueki.com/ruby/list.html

Hi Harry,

Thanks for your response, esp. the Japanese/English site.

I probably don’t need the “puts”. I’ll check this out tomorrow.

Best wishes,
Richard

On Jul 28, 10:32 am, Gregory B. [email protected] wrote:

under SciTE athttp://www.pastie.org/561156.

[1,2,3].each { }.to_s

=> “123”

Hi Gregory,

Many thanks for your perfect response. I apologize to you and this
newsgroup for being so obtuse. Now that you point out the my error,
it seems so obvious. Isn’t that always the case when the blind have
their eyesight restored. :slight_smile:

BTW, I love this technique for demoing code because it avoids the
pitfall of having the code disagree with output because of a typo.

Best wishes,
Richard

On Jul 28, 9:32 am, RichardOnRails
[email protected] wrote:

puts
puts "=> "

Thanks for your response, esp. the Japanese/English site.

I probably don’t need the “puts”. I’ll check this out tomorrow.

Best wishes,
Richard

I didn’t know exactly which “puts” you thought to be problematic. But
after getting Gregory’s response, my eyes were opened and my guess is
the puts before the eval is what you were referring to also.

Again thanks and best wishes,
Richard