'and' keyword?

Because puts("hi") yields nil, the second item never gets called:
    puts "hi" and puts "bye" if true

I can work around it with these:
         !puts "hi" and puts "bye" if true
         puts "hi";puts "bye" if true
         [puts("hi"), puts("bye")] if true

--But was hoping there was a more aesthetic one liner out there that can use
'and'..

Thanks in advance!!

How about

puts "hi", "bye" if true

einarmagnus

···

On 04.12.2008, at 05:38 , list. rb wrote:

Because puts("hi") yields nil, the second item never gets called:
   puts "hi" and puts "bye" if true

I can work around it with these:
        !puts "hi" and puts "bye" if true
        puts "hi";puts "bye" if true
        [puts("hi"), puts("bye")] if true

--But was hoping there was a more aesthetic one liner out there that can use
'and'..

Thanks in advance!!

# Because puts("hi") yields nil, the second item never
# gets called:

you can create your own puts/print that returns true or whatever

···

From: list. rb [mailto:list.rb@gmail.com]

List Rb wrote:

Because puts("hi") yields nil, the second item never gets called:
    puts "hi" and puts "bye" if true

I can work around it with these:
         !puts "hi" and puts "bye" if true
         puts "hi";puts "bye" if true
         [puts("hi"), puts("bye")] if true

--But was hoping there was a more aesthetic one liner out there that can
use
'and'..

Thanks in advance!!

In my opinion, using logical operators with side-effects is bad style.
I'd try to avoid it.

Regards
Stefan

···

--
Posted via http://www.ruby-forum.com/\.

List Rb wrote:

Because puts("hi") yields nil, the second item never gets called:
    puts "hi" and puts "bye" if true

I guess what you're trying to compress is this:

  if true
    puts "hi"
    puts "bye"
  end

If you really want a one-liner, then your best option is probably

  (puts "hi"; puts "bye") if true

(The parentheses ARE needed here. Otherwise puts "hi" is run always)

If these are actually both calls to puts then you only need a single
one:

   puts "hi","bye" if true

Everything else gets yucky. For example, you can rely on the nil return
value of puts:

  puts "hi" or puts "bye" if true

  puts("hi") || puts("bye") if true

···

--
Posted via http://www.ruby-forum.com/\.

What about?

puts %w{ hi bye }

R.

···

--
Ne baisse jamais la tête, tu ne verrais plus les étoiles.

Robert Dober :wink:

In English, I woud say..

jump and shout unless someone is sleeping.

Ruby is so elegant that I fidng myself wanting to write similarly,.

jump and shout unless someone.sleeping?

:frowning:

Just wish it's was interpreted as such

···

On Dec 4, 2008, at 3:51 PM, "Robert Dober" <robert.dober@gmail.com> wrote:

What about?

puts %w{ hi bye }

R.
--
Ne baisse jamais la tête, tu ne verrais plus les étoiles.

Robert Dober :wink:

Hi --

What about?

puts %w{ hi bye }

R.
--
Ne baisse jamais la tête, tu ne verrais plus les étoiles.

Robert Dober :wink:

In English, I woud say..

jump and shout unless someone is sleeping.

Ruby is so elegant that I fidng myself wanting to write similarly,.

jump and shout unless someone.sleeping?

Ruby isn't English, though.

:frowning:

Just wish it's was interpreted as such

It is; it's just that puts returns nil, so it doesn't pass through the
and gate. I don't think the word "and" just to mean "and then execute
this" would be very useful.

David

···

On Fri, 5 Dec 2008, List.rb wrote:

On Dec 4, 2008, at 3:51 PM, "Robert Dober" <robert.dober@gmail.com> wrote:

--
Rails training from David A. Black and Ruby Power and Light:
INTRO TO RAILS (Jan 12-15), Fort Lauderdale, FL
See http://www.rubypal.com for details
Coming in 2009: The Well-Grounded Rubyist (http://manning.com/black2\)

I do not think highly of the following code in general, but if this is
about some literal programming idea it might come in handy. Children
just do not use it when home alone :wink:

irb(main):010:0> class Object
irb(main):011:1> def and &blk
irb(main):012:2> blk.call
irb(main):013:2> end
irb(main):014:1> end
=> nil
irb(main):015:0> puts( 42 ).and { puts 42 }.and { puts 42 }
42
42
42

Cheers
R.

···

On Thu, Dec 4, 2008 at 11:28 PM, David A. Black <dblack@rubypal.com> wrote: