[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: typeof() creates elements in an array
From: |
Tom Gray |
Subject: |
RE: typeof() creates elements in an array |
Date: |
Fri, 1 Oct 2021 18:53:56 +0000 |
If you do that the manual will break again and require even more fine print.
"A reference to an array element that does not exist automatically creates that
array element"
Also changing the behavior could break existing code.
What would be a more helpful enhancement is a more succinct way to declare and
array without assigning any elements.
Now we must do something like this to declare x[0] is an array:
x[0][""]
delete x[0][""]
This might be better:
x[0][]
But it's a syntax error. If it were not a syntax error, what would it return?
.... a pointer to an array? Now we'd have something useful.
y = x[0][]
y[1] = "foo"
print x[0][1]
Although, I have to admit that I've gotten really good at recursion when I have
to search arrays and do work on sub arrays.
Tom
-----Original Message-----
From: bug-gawk <bug-gawk-bounces+tom_gray=keysight.com@gnu.org> On Behalf Of
arnold@skeeve.com
Sent: Friday, October 01, 2021 1:42 AM
To: aschorr@telemetry-investments.com; arnold@skeeve.com
Cc: ivo@palli.nl; bug-gawk@gnu.org
Subject: Re: typeof() creates elements in an array
CAUTION: This message originates from an external sender.
"Andrew J. Schorr" <aschorr@telemetry-investments.com> wrote:
> > Which language in the manual, please?
>
> I was referring to the language he originally cited:
>
> " Normally, passing a variable that has never been used to a built-in
> function causes it to become a scalar variable (unassigned). However,
> 'isarray()' and 'typeof()' are different; they do not change their
> arguments from untyped to unassigned."
I have added some additional language to the manual that should clarify things
some.
Andy and I are currently exploring if something like
BEGIN {
print typeof(x[0])
x[0][1] = "foo"
print x[0][1]
}
can be made to work "reasonably". The jury is still out.
Thanks,
Arnold