Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.ruby > #6638

Re: Ruby newbie newline question

From Robert Klemme <shortcutter@googlemail.com>
Newsgroups comp.lang.ruby
Subject Re: Ruby newbie newline question
Date 2012-10-08 22:44 +0200
Message-ID <adgs97Fqn4fU1@mid.individual.net> (permalink)
References <k4v5ee$o1l$1@dont-email.me>

Show all headers | View raw


On 08.10.2012 20:18, Gary McGath wrote:
> I'm an experienced programmer but a complete beginner at Ruby.
>
> I've tried to find an explanation of how newlines affect Ruby syntax,
> without success. Some websites claim that Ruby doesn't care about
> newlines, which is clearly false.
>
> The following code works:
>
> if i == 1
>     print "one"
> elsif i == 2
>    print "two"
> end
>
> If I put the same code all on one line, it gets an error ("unexpected
> kELSIF, expecting $end"). But if I add "then"s, i.e.,
>
> if i == 1 then print "one" elsif i == 2 then print "two" end
>
> then it works.

There's also ";" which can be used instead:

$ ruby19 -ce 'if i == 1 then print "one" elsif i == 2 then print "two" end'
Syntax OK
$ ruby19 -ce 'if i == 1; print "one" elsif i == 2 then print "two" end'
Syntax OK
$ ruby19 -ce 'if i == 1 print "one" elsif i == 2 then print "two" end'
-e:1: syntax error, unexpected tIDENTIFIER, expecting keyword_then or 
';' or '\n'
if i == 1 print "one" elsif i == 2 then print "two" end
                ^
-e:1: syntax error, unexpected keyword_elsif, expecting $end
if i == 1 print "one" elsif i == 2 then print "two" end
                            ^

Note: all on 1 line each.

> Could someone explain just what newlines do in cases like these, or at
> least provide some guidelines to when I need them?

Basically you need to separate individual statements.  You can do that 
with a line terminator or with semicolon.  "end" does not need a 
separator before it because it is a keyword - unless you want to define 
a class:

$ ruby19 -ce 'class X end'
-e:1: syntax error, unexpected keyword_end, expecting '<' or ';' or '\n'
-e:1: syntax error, unexpected $end
$ ruby19 -ce 'class X; end'
Syntax OK
$

I'm afraid I do not have more advice here.  But this was really never a 
big issue for me IIRC.  Just code away and let the syntax check give 
your the feedback. :-)

Kind regards

	robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Back to comp.lang.ruby | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Ruby newbie newline question Gary McGath <garym@REMOVEmcgathREMOVE.com> - 2012-10-08 14:18 -0400
  Re: Ruby newbie newline question Robert Klemme <shortcutter@googlemail.com> - 2012-10-08 22:44 +0200
    Re: Ruby newbie newline question Gary McGath <garym@REMOVEmcgathREMOVE.com> - 2012-10-08 17:57 -0400
      Re: Ruby newbie newline question Robert Klemme <shortcutter@googlemail.com> - 2012-10-09 18:58 +0200

csiph-web