syntax error, unexpected kELSE

C

Chris Bailey

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
 
D

David A. Black

Hi --

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++

There's no ++ increment operator. Change that to z += 1.


David
 
J

Jesús Gabriel y Galán

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++

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.
 
C

Chris Bailey

Jesús Gabriel y Galán said:
Ruby doesn't support this syntax. Change it to z += 1.


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.
 
D

Dave Bass

David said:
Strictly speaking it's not a syntax error.

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?
 
R

Robert Klemme

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

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
 
D

David A. Black

Hi --

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
:)


David

--
Rails training from David A. Black and Ruby Power and Light:
Intro to Ruby on Rails January 12-15 Fort Lauderdale, FL
Advancing with Rails January 19-22 Fort Lauderdale, FL *
* Co-taught with Patrick Ewing!
See http://www.rubypal.com for details and updates!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,773
Messages
2,569,594
Members
45,119
Latest member
IrmaNorcro
Top