Begin ... while ...?

--- test1.rb ---

def test_begin_while(*l)
  b = begin a = l.shift end while !l.empty?
end

puts test_begin_while(1,2,3)

# => nil

--- test2.rb ---

def test_begin_while(*l)
  b = begin a = l.shift end while !l.empty?
  b
end

puts test_begin_while(1,2,3)

# => 3

···

###############
# Help Me^^
###############
--
Posted via http://www.ruby-forum.com/.

irb(main):005:0> def test_begin_while(*l)
irb(main):006:1> b = begin a = l.shift; p [a,b]; a end while !l.empty?
irb(main):007:1> end
=> nil
irb(main):008:0> test_begin_while 1,2,3
[1, nil]
[2, 1]
[3, 2]
=> nil
irb(main):009:0> def test_begin_while(*l)
irb(main):010:1> b = ( begin a = l.shift; p [a,b]; a end while !l.empty? )
irb(main):011:1> end
=> nil
irb(main):012:0> test_begin_while 1,2,3
[1, nil]
[2, nil]
[3, nil]
=> nil
irb(main):013:0> def test_begin_while(*l)
irb(main):014:1> ( b = begin a = l.shift; p [a,b]; a end ) while !l.empty?
irb(main):015:1> end
=> nil
irb(main):016:0> test_begin_while 1,2,3
[1, nil]
[2, 1]
[3, 2]
=> nil

···

2008/8/21 Kyung won Cheon <kdream95@gmerce.co.kr>:

--- test1.rb ---

def test_begin_while(*l)
b = begin a = l.shift end while !l.empty?
end

puts test_begin_while(1,2,3)

# => nil

--- test2.rb ---

def test_begin_while(*l)
b = begin a = l.shift end while !l.empty?
b
end

puts test_begin_while(1,2,3)

# => 3

###############
# Help Me^^
###############

--
use.inject do |as, often| as.you_can - without end

If I did well understand, you just want to catch the values passed in as
args to test_begin_while in an array. I'd do:

irb(main):020:0> def test_begin_while(*l)
irb(main):021:1> a =
irb(main):022:1> b = begin a << l.shift end while !l.empty?
irb(main):023:1> a
irb(main):024:1> end
=> nil
irb(main):025:0> test_begin_while 1, 2, 3
=> [1, 2, 3]

Hope this helps.

Regards,

···

Em Qui, 2008-08-21 às 16:41 +0900, Kyung won Cheon escreveu:

--- test1.rb ---

def test_begin_while(*l)
  b = begin a = l.shift end while !l.empty?
end

puts test_begin_while(1,2,3)

# => nil

--- test2.rb ---

def test_begin_while(*l)
  b = begin a = l.shift end while !l.empty?
  b
end

puts test_begin_while(1,2,3)

# => 3

###############
# Help Me^^
###############

--
angico
------
home page: www.angico.org
Gnu/Linux, FLOSS, Espiritismo, e eu por mim mesmo 8^I
------
contatos:
email: angico@angico.org
skype: angico00
------

Kyung won Cheon wrote:

--- test1.rb ---

def test_begin_while(*l)
  b = begin a = l.shift end while !l.empty?
end

puts test_begin_while(1,2,3)

###############
# Help Me^^
###############

It works like this because your line works like

(b = begin a = l.shift end) while !l.empty?

and the 'command while condition' construct returns nil.

···

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