[#5218] Ruby Book Eng tl, ch1 question — Jon Babcock <jon@...>

13 messages 2000/10/02

[#5404] Object.foo, setters and so on — "Hal E. Fulton" <hal9000@...>

OK, here is what I think I know.

14 messages 2000/10/11

[#5425] Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...>

18 messages 2000/10/11
[#5427] RE: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — OZAWA -Crouton- Sakuro <crouton@...> 2000/10/11

At Thu, 12 Oct 2000 03:49:46 +0900,

[#5429] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...> 2000/10/11

Thanks for the input.

[#5432] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Yasushi Shoji <yashi@...> 2000/10/11

At Thu, 12 Oct 2000 04:53:41 +0900,

[#5516] Re: Some newbye question — ts <decoux@...>

>>>>> "D" == Davide Marchignoli <marchign@di.unipi.it> writes:

80 messages 2000/10/13
[#5531] Re: Some newbye question — matz@... (Yukihiro Matsumoto) 2000/10/14

Hi,

[#5544] Re: Some newbye question — Davide Marchignoli <marchign@...> 2000/10/15

On Sat, 14 Oct 2000, Yukihiro Matsumoto wrote:

[#5576] Re: local variables (nested, in-block, parameters, etc.) — Dave Thomas <Dave@...> 2000/10/16

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#5617] Re: local variables (nested, in-block, parameters, etc.) — "Brian F. Feldman" <green@...> 2000/10/16

Dave Thomas <Dave@thomases.com> wrote:

[#5705] Dynamic languages, SWOT ? — Hugh Sasse Staff Elec Eng <hgs@...>

There has been discussion on this list/group from time to time about

16 messages 2000/10/20
[#5712] Re: Dynamic languages, SWOT ? — Charles Hixson <charleshixsn@...> 2000/10/20

Hugh Sasse Staff Elec Eng wrote:

[#5882] [RFC] Towards a new synchronisation primitive — hipster <hipster@...4all.nl>

Hello fellow rubyists,

21 messages 2000/10/26

[ruby-talk:5636] Re: passing single or multiple strings.

From: Aleksi Niemel<aleksi.niemela@...>
Date: 2000-10-17 12:26:58 UTC
List: ruby-talk #5636
Hugh asks:

> irb(main):001:0> x = [[[2.3],4,[5,6]]]
> [[[2.3], 4, [5, 6]]]
> irb(main):002:0> *x
> SyntaxError: compile error
> irb(main):003:0> p *x
> [[2.3], 4, [5, 6]]
> nil

> Not sure why *x didn't work there...  

Well, there's no such construct as plain *x. But there are constructs for
indexing (aref_args), multiple left hand side on assignment (mhls), multiple
right hand side on assignment (mrls), call arguments (call_args), when
arguments (when_args) and function definition parameter list (f_arglist)
where the star symbol (tSTAR) have special meaning. (The names in
parentheses could be found from parse.y, if you want to check.)

So in above case *x does not parse, thus there's an error, but p *x parses,
as it means p(*x) and call_args rule parses *x. Namely *x in this context
takes an array of x and translates the elements to be arguments. That means
it concatenates the elements to the argument list, thus "removes" the
outmost level of array.

Thus the difference of p x and p *x is not very visible, but very
significant:

p  x  [[[2.3], 4, [5, 6]]]
p *x   [[2.3], 4, [5, 6]]

By investigating the other constructs I listed, you'll find out the
different uses for *constructs.

	- Aleksi

In This Thread

Prev Next