Michael Lazzaro <[EMAIL PROTECTED]> writes:
> Solution 1: If you attempt to SET a cell to it's 'empty value', it
> will be set to it's default:
>
>
> my int @a is default(5); #
> @a[5] = 0; # actually sets it to it's 'empty
> value', 5
>
> @a[5] = undef; # autocnv to 0, + warning, still sets to 5
>
> my Int @a is default(5); # NOTE difference in type!
> @a[5] = 0; # THIS really does set it to 0
> @a[5] = undef; # and this sets it to 5
>
> So you can't set something to its type's own empty value, because it
> will, by definition, thereafter return it's "overloaded" empty value,
> <def>.
AAARGH, *runs for shelter*
Setting an element to a leagal value, results in a different value to
be stored, making it impossible to store this value. And this is even
the most prominent value of the underlying type.
> Solution 2: _ANY_ other solution would require the introduction of
> 'fake empty' and 'really empty', and require arrays to keep track of
> the difference.
>
>
> my Int @a is default(5);
>
> @a[3] = 3; # there are now 4 items in the array
> @a[2]; # was autoset to undef, so returns 5
> @a[4]; # doesn't exist, so returns 5
>
> @a[2] = undef; # well, it's still undef, but now mark it
> # as a 'real' undef, so don't return 5.
>
> This is essentially adding another layer of defined-ness on each cell,
> and therefore requires an additional flag be kept & checked for each
> array element. While this is certainly a possibility, I worry about
> the complexity it introduces.
Solution 3: The autoset sets the value to the default value.
my Int @a is default(5);
@a[3] = 3; # there are now 4 items in the array
@a[2]; # was autoset 5 so returns 5
@a[4]; # doesn't exist, so returns 5
@a[2] = undef; # set to undef, so returns undef
@a[5] = @a.default # if you really want to reset something to
# default. BTW there are now 6 items in
# the array. returns 5
@a[4]; # is now autoset to 5 so it remains 5
The default default value is the empty value of the base type.
my Int @a;
is the same as
my Int @a is default(undef);
bye
b.
--
Juergen Boemmels [EMAIL PROTECTED]
Fachbereich Physik Tel: ++49-(0)631-205-2817
Universitaet Kaiserslautern Fax: ++49-(0)631-205-3906
PGP Key fingerprint = 9F 56 54 3D 45 C1 32 6F 23 F6 C7 2F 85 93 DD 47