[#376274] Best Linux Distro for Ruby? — Nick Hird <boondox@...>

What are some of the better linux distro's for ruby development? I know

15 messages 2011/01/02

[#376329] Is singleton class of an object already created? — Samnang Chhun <samnang.chhun@...>

I would like to know is there any ways to check is singleton class of an

12 messages 2011/01/04

[#376333] Threading in ruby — "Vishnu I." <pathsny@...>

Hi

13 messages 2011/01/04
[#376335] Re: Threading in ruby — Robert Klemme <shortcutter@...> 2011/01/04

On Tue, Jan 4, 2011 at 8:41 AM, Vishnu I. <pathsny@gmail.com> wrote:

[#376339] ripl - an irb alternative - 0.3.0 released — ghorner <gabriel.horner@...>

ripl, a light modular alternative to irb, has reached 0.3.0. ripl

32 messages 2011/01/04

[#376382] Class Initialization? — Kedar Mhaswade <kedar.mhaswade@...>

I have a class and two class methods: self.encode and self.decode. The

14 messages 2011/01/05
[#376385] Re: Class Initialization? — Andrew Wagner <wagner.andrew@...> 2011/01/05

On Wed, Jan 5, 2011 at 9:33 AM, Kedar Mhaswade <kedar.mhaswade@gmail.com>wrote:

[#376388] Petition to add Metasploit Project as Ruby success story — Christian Kirsch <Christian_Kirsch@...7.com>

I noticed the Ruby success stories on the Ruby website. I would like to mak=

10 messages 2011/01/05

[#376453] Block variable - How is it read in English? — SW Engineer <abder.rahman.ali@...>

Following the "Ruby on Rails Tutorial", and under section "6.1.1

16 messages 2011/01/06

[#376574] Best way for Array#find+transform ? — "Jonas Pfenniger (zimbatm)" <jonas@...>

There is a pattern that I'm using quite regularly, but I'm not

17 messages 2011/01/08
[#376575] Re: Best way for Array#find+transform ? — Anurag Priyam <anurag08priyam@...> 2011/01/08

> I know I can come up with a new method on Array that would shorten this t=

[#376576] Re: Best way for Array#find+transform ? — Anurag Priyam <anurag08priyam@...> 2011/01/08

> paths.map{|path| File.join(path, filename)}.select{|name| File.exist?(path)}

[#376577] Re: Best way for Array#find+transform ? — "Jonas Pfenniger (zimbatm)" <jonas@...> 2011/01/09

2011/1/8 Anurag Priyam <anurag08priyam@gmail.com>:

[#376579] Re: Best way for Array#find+transform ? — David J. Hamilton <groups@...> 2011/01/09

Excerpts from Jonas Pfenniger (zimbatm)'s message of Sat Jan 08 16:05:05 -0800 2011:

[#376586] Re: Best way for Array#find+transform ? — "Jonas Pfenniger (zimbatm)" <jonas@...> 2011/01/09

2011/1/9 David J. Hamilton <groups@hjdivad.com>:

[#376606] Re: Best way for Array#find+transform ? — David J. Hamilton <groups@...> 2011/01/10

Excerpts from Jonas Pfenniger (zimbatm)'s message of Sun Jan 09 04:08:10 -0800 2011:

[#376680] Parallel Assignments and Elegance/Complexity Ratio. — Kedar Mhaswade <kedar.mhaswade@...>

In SICP, I read that "Programs should be written for people to read, and

15 messages 2011/01/11
[#376697] Re: Parallel Assignments and Elegance/Complexity Ratio. — Josh Cheek <josh.cheek@...> 2011/01/11

On Tue, Jan 11, 2011 at 8:29 AM, Kedar Mhaswade <kedar.mhaswade@gmail.com>wrote:

[#376682] JRuby 1.6.0.RC1 released — Thomas E Enebo <tom.enebo@...>

The JRuby community is pleased to announce the release of JRuby 1.6.0.RC1.

14 messages 2011/01/11

[#376744] Case statements - Just beautification — flebber <flebber.crue@...>

I just want to clarify case statements the name after the word case is

10 messages 2011/01/12

[#376792] Ruby is interpreted and scripting language? — Sai Babu <sateesh.mca09@...>

I am ruby fresher.

16 messages 2011/01/13

[#376855] Retrieving and copying element from array — Simon Harrison <simon@...>

If I have an array like this:

11 messages 2011/01/13

[#376898] What are your ruby rough cuts ? — "Jonas Pfenniger (zimbatm)" <jonas@...>

Hi rubyists,

32 messages 2011/01/14
[#376930] Re: [poll] What are your ruby rough cuts ? — David Masover <ninja@...> 2011/01/15

On Friday, January 14, 2011 07:34:04 am Jonas Pfenniger (zimbatm) wrote:

[#376937] Re: What are your ruby rough cuts ? — Joseph Lenton <jl235@...> 2011/01/15

David Masover wrote in post #975080:

[#376959] Why Quby? (was Re: What are your ruby rough cuts ?) — David Masover <ninja@...> 2011/01/15

On Saturday, January 15, 2011 04:42:58 am Joseph Lenton wrote:

[#377020] Obscure syntax error — Rolf Timmermans <molfie@...>

Hi all,

16 messages 2011/01/17

[#377052] Calling by Reference - Two Questions — Mike Stephens <rubfor@...>

I know I'm not the first person to get stumped by how to get Ruby to

15 messages 2011/01/18

[#377072] The most recommended way of naming methods in Ruby — Edmond Kachale <edmond.kachale@...>

Rubists,

14 messages 2011/01/18
[#377082] Re: The most recommended way of naming methods in Ruby — Phillip Gawlowski <cmdjackryan@...> 2011/01/18

On Tue, Jan 18, 2011 at 9:16 AM, Edmond Kachale

[#377121] Improving performance of hash math — dblock <dblockdotorg@...>

I am trying to improve performance of Euclidian distance between two

13 messages 2011/01/19

[#377226] Totally lost in learning Ruby — Hilary Bailey <my77elephants@...>

This is my second attempt to understand Ruby. I completely read 1)

61 messages 2011/01/21
[#378239] Re: Totally lost in learning Ruby — Hilary Bailey <my77elephants@...> 2011/02/08

Hi everybody,

[#378246] Re: Totally lost in learning Ruby — Robert Klemme <shortcutter@...> 2011/02/08

On Tue, Feb 8, 2011 at 3:16 AM, Hilary Bailey <my77elephants@gmail.com> wro=

[#377236] using gems installed via 'sudo gem install' — "Piotr S." <thisredoned@...>

I've installed ruby-opengl through sudo gem install because there were

15 messages 2011/01/21

[#377362] pg gem 0.10.1 wth Ruby 1.9.2 does not work with method @pg_conn.exec_prepared(stmt_name, parameters) — Zeno Davatz <zdavatz@...>

Hi

9 messages 2011/01/24

[#377388] The finer points of postfix conditionals. — Jon Leighton <j@...>

Hi,

13 messages 2011/01/24

[#377411] Obtain data from .csv — Kamarulnizam Rahim <niezam54@...>

Sample of .csv file:

19 messages 2011/01/25

[#377609] why is overloading invalid in ruby. — Ted Flethuseo <flethuseo@...>

I don't understand why when I try to overload I get an error. Can I

36 messages 2011/01/27

[#377645] If you had the choice between Ruby & Groovy — Noah Cutler <sit1way@...>

Hey All.

15 messages 2011/01/28

[#377650] IDE? — <johan.tempelman@...>

Hi,

13 messages 2011/01/28

[#377703] Zlib::GzipReader and multiple compressed blobs in a single stream — Jos Backus <jos@...>

Hi,

11 messages 2011/01/28

[#377761] New to programming AND new to Ruby — "Cassandra K." <cassandra.k@...>

Hello. I am trying to teach myself Ruby. I have no background in

13 messages 2011/01/31

[#377785] 2011: Which Ruby books have you read? And which would you recommend? — "Aston J." <azzzz@...>

I know there are a lot of threads about books, but some of them are as

16 messages 2011/01/31

[#377800] How to know the exit status within at_exit() block? — Iñaki Baz Castillo <ibc@...>

Hi, my program invokes "exit true" or "exit false" and I want to catch

17 messages 2011/01/31

Re: Case statements - Just beautification

From: flebber <flebber.crue@...>
Date: 2011-01-14 11:40:45 UTC
List: ruby-talk #376892
On Jan 13, 7:25=A0am, Rick DeNatale <rick.denat...@gmail.com> wrote:
> On Thu, Jan 13, 2011 at 5:35 AM, flebber <flebber.c...@gmail.com> wrote:
> > On Jan 13, 6:41=A0pm, Tim Roberts <t...@probo.com> wrote:
> >> flebber <flebber.c...@gmail.com> wrote:
> >> >I just want to clarify case statements the name after the word case i=
s
> >> >this just for beautification and to help with code readability? What
> >> >purpose does it serve.
>
> >> >So in my code its "winunit" and matz's code its "birthyear".
>
> >> ># Method 1 - Confident - assign range
> >> ># number -> number
> >> >def pricerange(x)
> >> >puts "Enter the quoted price: "
> >> >x =3D gets.chomp
> >> >winalloc =3D case winunit
> >> > =A0when x =3D=3D (1.50...2.50) then ...
> >> > =A0when x =3D=3D (2.50...3.80) then ...
> >> > =A0when x =3D=3D (3.80...5.50) then ...
> >> > =A0else something
> >> >end
>
> >> Perhaps its purpose would be clearer if you wrote it like Matz's code:
>
> >> x =3D gets.chomp
> >> winalloc =3D case x
> >> =A0 when (1.50...2.50) then ...
> >> =A0 when (2.50...3.80) then ...
> >> =A0 when (3.80...5.50) then ...
> >> =A0 else something
> >> end
> >> --
> >> Tim Roberts, t...@probo.com
> >> Providenza & Boekelheide, Inc.
>
> > I tough my code looked like Matz's
>
> Really? It doesn't look much like it to me. =A0The series of when
> statements following a =A0case statement without an expression work
> pretty much like an if elsif...else sequence. =A0WIth an expression in
> the case statement like
>
> case foo
> when bar
> =A0 =A0 baz
> when bop
> =A0 =A0boo
> else
> =A0 =A0shazbot
> end
>
> is equivalent to:
> if bar =3D=3D=3D foo
> =A0 =A0 baz
> elsif bop =3D=3D=3D foo
> =A0 =A0boo
> else
> =A0 =A0shazbot
> end
>
> Case is kind of like a macro, so I'll talk about case statements
> expanding, but what's really happening is that the Ruby parser and
> interpreter evaluate the code 'as if' it had been written as an
> if;elsif...;else sequence.
>
> Note that the logical expressions in the if and elsif clauses are =3D=3D=
=3D
> messages sent the the when value with the case value as the argument.
> That's why =3D=3D=3D (with 3 equal signs) is called the case comparison
> operator. =A0Object defines =3D=3D=3D to be the same as =3D=3D but certai=
n classes
> redefine it. =A0In particular Range overrides it to be the same as
> Range#include?
>
> > Matz's code
> > # Case expression tests ranges with =3D=3D=3D
> > generation =3D case birthyear
> > =A0 =A0 =A0 =A0 =A0 =A0 when 1946..1963: "Baby Boomer"
> > =A0 =A0 =A0 =A0 =A0 =A0 when 1964..1976: "Generation X"
> > =A0 =A0 =A0 =A0 =A0 =A0 when 1978..2000: "Generation Y"
> > =A0 =A0 =A0 =A0 =A0 =A0 else nil
> > =A0 =A0 =A0 =A0 =A0 =A0 end
>
> This 'expands' to
>
> =A0generation =3D if (1946..1963) =3D=3D=3D birthyear
> =A0 =A0 =A0 "Baby Boomer"
> =A0 =A0elsif (1964..1976) =3D=3D=3D birthyear
> =A0 =A0 =A0 "Generation X"
> =A0 =A0elsif 1(978..2000) =3D=3D=3D birthyear
> =A0 =A0 =A0 "Generation Y"
> =A0 =A0else
> =A0 =A0 =A0 nil
> =A0 =A0 end
>
> So the value of the case is determined by the first range which
> includes birthyear.
>
> Your code (I'm changing the ...s so we can distinguish the different 'leg=
s'):
>
> > My Code - (...) are placeholders
> > x =3D gets.chomp
> > winalloc =3D case winunit
> > =A0 =A0 =A0 =A0 =A0when x =3D=3D 1.50...2.50: something1
> > =A0 =A0 =A0 =A0 =A0when x =3D=3D 2.50...3.80: something2
> > =A0 =A0 =A0 =A0 =A0when x =3D=3D 3.80...5.50: something3
> > =A0 =A0 =A0 =A0 =A0else something_else
>
> 'expands' to:
>
> =A0 winalloc =3D if (x =3D=3D 1.50...2.50) =3D=3D=3D winunit
> =A0 =A0 =A0 =A0something1
> =A0 =A0elsif (x =3D=3D 2.50...3.80) =3D=3D=3D winunit
> =A0 =A0 =A0 something2
> =A0 =A0elsif (x =3D=3D 3.80...5.50) =3D=3D=3D winunit
> =A0 =A0 =A0something3
> =A0 =A0 else
> =A0 =A0 =A0 something_else
> =A0 =A0 end
>
> We can see by the code above the case that x is a string (the result
> of gets chomp), =A0so all those x =3D=3D <range> expressions will evaluat=
e
> to false since x is a string and not a Range. =A0So if we substitute:
>
> =A0 winalloc =3D if false =3D=3D=3D winunit
> =A0 =A0 =A0 =A0something1
> =A0 =A0elsif false =3D=3D=3D winunit
> =A0 =A0 =A0 sometthing2
> =A0 =A0elsif false =3D=3D=3D winunit
> =A0 =A0 =A0something3
> =A0 =A0 else
> =A0 =A0 =A0 something_else
> =A0 =A0 end
>
> which can be simplified to:
>
> =A0 winalloc =3D if false =3D=3D=3D winunit
> =A0 =A0 =A0 =A0something1
> =A0 =A0 else
> =A0 =A0 =A0 something_else
> =A0 =A0 end
>
> which should be obvious I hope.
>
> Note that false, being the sole instance of FalseClass uses Object#=3D=3D=
=3D
> so false =3D=3D=3D winunit will only be true if the variable winunit
> references the unique false object.
>
> So since we don't know what winunit actually is from the snippet
> you've given, the result will either be something1 iff winunit =3D=3D
> false, and something_else otherwise. =A0If this is the first appearance
> of winunit it will be nil, so the case expression will always return
> something_else.
>
> Note that since x is a string (the result of gets chomp) it won't be a
> member of any of those ranges. =A0I'm guessing that maybe winunit is
> meant to be the integer value of that string. =A0If so maybe you want
> something like this:
>
> x =3D gets.chomp
> winunit =3D x.to_i
> winalloc =3D case winunit
> =A0 =A0 =A0 =A0 =A0when 1.50...2.50: ...
> =A0 =A0 =A0 =A0 =A0when 2.50...3.80: ...
> =A0 =A0 =A0 =A0 =A0when 3.80...5.50: ...
> =A0 =A0 =A0 =A0 =A0else something
>
> Which should look a lot more like the code in Matz and Flanigan.
>
> HTH
> --
> Rick DeNatale
>
> Blog:http://talklikeaduck.denhaven2.com/
> Github:http://github.com/rubyredrick
> Twitter: @RickDeNatale
> WWR:http://www.workingwithrails.com/person/9021-rick-denatale
> LinkedIn:http://www.linkedin.com/in/rickdenatale

Thanks for the explanation. Yes that clears up the question.

In This Thread

Prev Next