I have some good experience in other languages and consider myself a
good programmer, but some of the good techniques I've picked up don't
seem to work here. Here are two examples.
x=aNum
y=0
x.times do
(y+1).times do
Stuff
end
end
y never actually increments. Why? (No pun intended.) y should go up
one x times by the end. Instead it stays at zero. And it's kind of
troubling that is does the loop once even when y is zero; or is that
just because it's a 'do' loop and not a 'for' loop?
And I've learned that to do the gets thing, I have to have
STDOUT.flush before it. It seems that no matter what I do, if it's
even two lines above the gets, I get the gets at the start of the
program even though it was towards the end. Why? If it is such a
common thing, why is STDOUT.flush not automatically called by the
language?
Although as much as this all complexes me, I am very glad to be able
to do this with guilty glee:
STDOUT.flush
puts 'Hello ' + gets.chomp
Although I have a feeling I'll rarely get to use this trick.