[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

begin ... while ... ???

Kyung won Cheon

8/21/2008 7:41:00 AM

--- 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-....

3 Answers

Robert Klemme

8/21/2008 12:08:00 PM

0

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^^
> ###############

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



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

angico

8/24/2008 8:26:00 AM

0

Em Qui, 2008-08-21 =C3=A0s 16:41 +0900, Kyung won Cheon escreveu:
> --- test1.rb ---
>=20
> def test_begin_while(*l)
> b =3D begin a =3D l.shift end while !l.empty?
> end
>=20
> puts test_begin_while(1,2,3)
>=20
> # =3D> nil
>=20
>=20
> --- test2.rb ---
>=20
> def test_begin_while(*l)
> b =3D begin a =3D l.shift end while !l.empty?
> b
> end
>=20
> puts test_begin_while(1,2,3)
>=20
> # =3D> 3
>=20
> ###############
> # Help Me^^
> ###############

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 =3D []
irb(main):022:1> b =3D begin a << l.shift end while !l.empty?
irb(main):023:1> a
irb(main):024:1> end
=3D> nil
irb(main):025:0> test_begin_while 1, 2, 3
=3D> [1, 2, 3]

Hope this helps.

Regards,

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


TPReal

8/24/2008 9:17:00 AM

0

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-....