[#395238] rubygem: ispunity (unite all your internet connections) — Arun Tomar <tomar.arun@...>

Dear friends,

12 messages 2012/05/01

[#395250] Overwriting one Ruby array or arrays with another — Craig Law <lists@...>

Hi

14 messages 2012/05/02

[#395258] array of strings - finding letter combinations — "Sebastjan H." <lists@...>

Hi All,

16 messages 2012/05/02

[#395357] Why Enumerator#next does not return more than one value? — Földes László <lists@...>

If I have an Enumerator which yields elements of a mathematical series

10 messages 2012/05/07

[#395373] How to use Data_Wrap_Struct to assign the DATA VALUE to an exsiting Ruby object? — Iñaki Baz Castillo <ibc@...>

Hi, my code receives an arbitrary klass name (provided by the user)

8 messages 2012/05/07

[#395429] passing via instance variable or regular () — sam jam <lists@...>

def first

10 messages 2012/05/10

[#395463] I'm looking for a Metaprogramming Project — Phil Stone <lists@...>

Hello,

19 messages 2012/05/11

[#395548] A million reasons why Encoding was a mistake — Marc Heiler <lists@...>

Newcomer wants to try Ruby.

15 messages 2012/05/15
[#395561] Re: A million reasons why Encoding was a mistake — Ryan Davis <ryand-ruby@...> 2012/05/15

[#395595] Re: A million reasons why Encoding was a mistake — Brian Candler <lists@...> 2012/05/16

I will add that the OP is not entirely alone in his opinion.

[#395551] How to ensure that a block runs entirely after other threads? (Thread.exclusive does not "work") — Iñaki Baz Castillo <ibc@...>

Hi, I expected that in the following example code, thread t1 would not

8 messages 2012/05/15

[#395575] GUI with ruby on windows — David Acosta <lists@...>

hello friends, i am a begginer and i have a litlle question, how can i

17 messages 2012/05/16

[#395604] what is going wrong here? — roob noob <lists@...>

Notice the initialization of both classes in each of the examples, if

20 messages 2012/05/16

[#395646] rb_gc_register_address() or rb_gc_mark()? — Iñaki Baz Castillo <ibc@...>

Hi, I've bad experiences with rb_gc_register_address(), it does never

16 messages 2012/05/17

[#395686] reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...>

Hi,

19 messages 2012/05/18
[#395694] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Hello,

[#395697] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061272:

[#395698] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Sebastjan H. wrote in post #1061276:

[#395699] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061277:

[#395750] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Hi,

[#395754] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Sebastjan H. wrote in post #1061483:

[#395740] ? Ruby through CGI and Rails — Shaun Lloyd <list@...>

Hi everybody,

22 messages 2012/05/21
[#395764] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/21

Shaun Lloyd wrote in post #1061455:

[#395786] Re: Ruby through CGI and Rails — Shaun Lloyd <list@...> 2012/05/22

On 22/05/12 03:37, Brian Candler wrote:

[#395838] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/23

Shaun Lloyd wrote in post #1061602:

[#395787] Changing self class from inside a method?? — David Madison <lists@...>

Let's start off with the assumption I want a method that allows an

10 messages 2012/05/22

[#395841] Memory-efficient set of Fixnums — George Dupre <lists@...>

Hi,

25 messages 2012/05/23

[#395883] looking for a ruby idiom : r=foo; return r if r — botp <botpena@...>

Hi All,

11 messages 2012/05/24

[#395966] Am I justified to use a global variable if it must be used in all scopes? — Phil Stone <lists@...>

Hello,

12 messages 2012/05/27

[#396010] does this leak more than the size of the string via timing side channels — rooby shoez <lists@...>

string1 = "string"

16 messages 2012/05/29

[#396038] Is it possible to avoid longjmp in exceptions, Thread#kill, exit(), signals? — Iñaki Baz Castillo <ibc@...>

Hi, my Ruby C extension runs a C loop (libuv) without GVL. At some

8 messages 2012/05/29

Re: why is else without rescue useless with statement modifiers?

From: Chad Perrin <code@...>
Date: 2012-05-17 23:11:37 UTC
List: ruby-talk #395672
On Fri, May 18, 2012 at 06:25:19AM +0900, roob noob wrote:
> def sane?
> sane = "true" if "a" == "a" else sane = "false"
> end
> 
> puts sane?
> 
> =>warning: else without rescue is useless
> =>false

Others have touched on this, but for more detail, I'll try to explain.

You are using an inline "if" here:

    (do something) if (condition)

That usage of "if" does not accpet an "else".  If you want to have an
"else" clause with your if, you need to test the condition first.  One
form is, of course, the other example you provided:


> 
> def sane?
> if "a" == "a" then sane = true else sane = "false"
> end
> end
> 
> puts sane?
> 
> =>true

. . . except that the assignments to the "sane" variable is meaningless
here.  What you probably want is either this:

    def sane?
      if 'a' == 'a' then true else false end
    end

. . . or this (which is a bit clearer, in my opinion):

    def sane?
      if 'a' == 'a'
        true
      else
        false
      end

As mentioned by others, you could use a ternary operator:

    def sane?
      'a' == 'a' ? true : false
    end

. . . or just directly return the result of the comparison:

    def sane?
      'a' == 'a'
    end

It's also worth noting that your first example returns strings of "true"
and "false", while your next example (as well as all of my alternatives
to it) returns the true and false boolean values themselves.

Finally, the reason it is complaining about an absent "rescue" is simply
that it has no idea what your "else" is supposed to be doing in the first
example, because that form of an "if" conditional does not accept an
"else" condition.  As such, your Ruby implementation is guessing at what
you meant the "else" to do.  It happens to be guessing incorrectly in
this case.

If you do not wrap your conditional expression in a method, however, you
should get a different error message, as shown in my irb test:

    >> true if 'a' == 'a' else false
    SyntaxError: (irb):2: syntax error, unexpected keyword_else, expecting $end
    true if 'a' == 'a' else false

I hope that helps.

-- 
Chad Perrin [ original content licensed OWL: http://owl.apotheon.org ]

In This Thread