Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #6638
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar
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