On Tue, Jan 28, 2003 at 04:07:17PM -0500, Aaron Sherman wrote:
> I think this debate is easier if you think of defaults as overriding and
> auto-vivification method on a container.
Hmm. I don't :-)
I think it is easier if you think of defaults as overriding undef.
> On Tue, 2003-01-28 at 14:47, Paul Johnson wrote:
> > Michael Lazzaro said:
>
> > > 2a) When a cell is explicitly re-undefined, does the default value take
> > > effect?
> > >
> > > my @a is Array( default => 'foo' ) = (1,2,3);
> > >
> > > @a[1] = undef;
> > > @a[1]; # undef, or 'foo'?
> > >
> > > STRAWMAN ANSWER: 'foo'.
> >
> > Seems right to me. Anything else would be very confusing, I think.
>
> This would be very confusing to me. In fact, it seems WRONG to me unless
> we're saying that such arrays can simply never hold an undefined
> value... which again seems wrong.
I think that seems right.
> my @a is Array ( default => 'foo' );
> @a[1] = undef;
>
> Should yield the following, I would think:
>
> ('foo', undef, 'foo' x Inf)
>
> Though, obviously there's no such thing as @a[2], but if you reference
> it, that's how it would auto-vivify.
>
> If that's not the case, I need to get my head around why, since Perl
> *does* distinguish between defined and exists.
But I wish it wouldn't for arrays. That only came about to support
pseudo-hashes which are going / have gone away.
Are you suggesting that hashes should also have a default? That would
seem consistent and at least as useful as arrays having a default.
--
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net