[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gawk] On uninitialized variables
From: |
M |
Subject: |
Re: [bug-gawk] On uninitialized variables |
Date: |
Mon, 13 May 2019 23:38:02 +0300 |
In addition, concerning the fourth example:
$ gawk 'BEGIN { if (! isarray(x)) { print typeof(x) } }'
untyped
According to the manual:
"And in fact, due to the way gawk works, if you pass
the name of a variable that has not been previously used to isarray(), gawk
ends up turning it into a scalar."
So, I expected to see "unassigned" in the output.
However, there is "untyped" in the output.
_______________
Yours respectfully,
Mark Krauze
13.05.2019, 22:52, "M" <address@hidden>:
> Thank you!
> And another question about unassigned variables.
> When does a variable with a type "untyped" turn into a type "unassigned" (and
> vice versa, if it's even possible)?
>
> With GNU AWK v5.0.0 I have the following:
>
> $ gawk 'BEGIN { print typeof(x) }'
> untyped
> $ gawk 'BEGIN { print typeof(x); print typeof(x) }'
> untyped
> untyped
> $ gawk 'BEGIN { if (x == "") { print typeof(x) } }'
> unassigned
> $ gawk 'BEGIN { if (! isarray(x)) { print typeof(x) } }'
> untyped
> $ gawk 'BEGIN { if (! x) { print typeof(x) } }'
> unassigned
>
> In the section "9.1.7 Getting Type Information" for "untyped":
>
> "x has not yet been used yet at all; it can become a scalar or an array."
>
> As far as I understand x is "untyped" because it hasn't yet been used in a
> scalar or array context.
> Am I right?
>
> If it is so, there are some functions like "typeof" or "isarray" which don't
> define a context, so to speak.
> I don't know how many of them there are.
> Thus (theoretically) you can _use_ a variable x, but after such operations it
> still has a type "untyped".
>
> _______________
>
> Yours respectfully,
> Mark Krauze
>
> 13.05.2019, 22:11, "address@hidden" <address@hidden>:
>> Hi.
>>
>> M <address@hidden> wrote:
>>
>>> Hello! When rereading the manual (v5.0.0), I noticed an inexact statement
>>> in Chapter 1:
>>>
>>> 1.5 A More Complex Example
>>>
>>> "(This works because awk variables are automatically initialized to
>>> zero.)"
>>>
>>> It's true only in a numeric context.
>>> When used as strings, uninitialized variables are automatically
>>> initialized to an empty string.
>>> Although this peculiarity is emphasised throughout the rest of the manual,
>>> I think it would be useful to mention about it in the introduction
>>> chapter too (especially for novices).
>>
>> Thanks for the note. Looking at the section as a whole, I think it
>> would be distracting to try to introduce information about initialization
>> to the empty string. Sometimes it's better not to be fully complete.
>>
>> So, I appreciate your making the suggestion, but I think it better to
>> leave that section alone.
>>
>> Thanks!
>>
>> Arnold
- [bug-gawk] On uninitialized variables, M, 2019/05/12
- Re: [bug-gawk] On uninitialized variables, arnold, 2019/05/13
- Re: [bug-gawk] On uninitialized variables, M, 2019/05/13
- Re: [bug-gawk] On uninitialized variables,
M <=
- Re: [bug-gawk] On uninitialized variables, M, 2019/05/14
- Re: [bug-gawk] On uninitialized variables, arnold, 2019/05/14
- Re: [bug-gawk] On uninitialized variables, M, 2019/05/14
- Re: [bug-gawk] On uninitialized variables, arnold, 2019/05/14
- Re: [bug-gawk] On uninitialized variables, M, 2019/05/21
Re: [bug-gawk] On uninitialized variables, Manuel Collado, 2019/05/14