MISE À JOURcomment créer un tableau vide
La description originale ci-dessous présente de nombreuses erreurs; gawk lint ne se plaint pas des tableaux non initialisés utilisés comme RHS de in
. Par exemple, l'exemple suivant ne donne aucune erreur ou avertissement. Je ne supprime pas la question parce que la réponse que je suis sur le point d'accepter donne une bonne suggestion d'utiliser split
avec une chaîne vide pour créer un tableau vide.
BEGIN{
LINT = "fatal";
// print x; // LINT gives error if this is uncommented
thread = 0;
if (thread in threads_start) {
print "if";
} else {
print "not if";
}
}
Original Question
Beaucoup de mes scripts awk ont une construction comme suit:
if (thread in threads_start) { // LINT warning here
printf("%s started at %d\n", threads[thread_start]));
} else {
printf("%s started at unknown\n");
}
Avec gawk --lint
qui se traduit par
warning: reference to uninitialized variable `thread_start'
Donc, je initialise dans le bloc BEGIN comme suit. Mais cela semble kludge-y. Existe-t-il un moyen plus élégant de créer un tableau à zéro élément?
BEGIN { LINT = 1; thread_start[0] = 0; delete thread_start[0]; }
Pas que je sache. –