I’ve been trying to solve the problem in the following bit of code for
quite some time now with no luck. The unexpected kELSE error is occuring
in the commented line. $map is a multi-dimensional array and the
makeshift iterator works properly without the if/else statement. Any
ideas?
def pmap
input = gets.downcase.chomp
if input == “exit”
$plrObj.save
puts “Exiting…”
$running = false
else
buf = “”
z = 0
$map.each do |x|
x.each do |y|
if z < 5
buf = buf + y.to_s
z++
else
buf = buf + “\n”
z = 0
end
end
end
puts buf
end
end
puts “Exiting…”
$running = false
else
buf = “”
z = 0
$map.each do |x|
x.each do |y|
if z < 5
buf = buf + y.to_s
z++
Ruby doesn’t support this syntax. Change it to z += 1.
else
buf = buf + “\n”
z = 0
end
end
end
puts buf
end
end
Hope this helps,
Jesus.
Thanks a million guys, I go back and forth with languages and didn’t
even notice that. I wish the error had been “Syntax Error, You are an
idiot”. I probably would have figured it out faster.
As the ++ and – notations are so common in other languages, and some of
us speak several of those languages, might it be helpful to have a low
level warning issued by Ruby?
As the ++ and – notations are so common in other languages, and some of
us speak several of those languages, might it be helpful to have a low
level warning issued by Ruby?
I don’t think so. I prefer not to have Ruby apologize for not being
Perl or C It’s better to save warnings for things that have to do
with Ruby itself. Also, learning about += is a kind of rite of passage
puts “Exiting…”
buf = buf + “\n”
z = 0
end
end
end
puts buf
end
end
Apart from the ++ issue you might want to change other things as well.
First of all, you can use “buf += y.to_s” but this is less efficient
than “buf << y.to_s”.
Then, you are skipping every fifth element. Is this really what you
want?
Finally, if you are printing to console anyway direct printing is more
efficient. So I am assuming that you probably rather want something
like this:
def pmap
input = gets.downcase.chomp
if input == “exit”
$plrObj.save
puts “Exiting…”
$running = false
else
z = 0
$map.each do |x|
x.each do |y|
print y
if z >= 5
puts
z = 0
end
end
end
puts unless z == 0
end
end
Kind regards
robert
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.