JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?JMP 15 suppose qu'une l-value est un nom de colonne. Ce n'était pas le comportement des versions précédentes. Est-ce voulu ou est-ce un bug ?
Reproduire:
dt=new table("test");
dt<<NEW column=""></NEW>Cela donne une erreur dans JMP 15 mais pas dans JMP 14.
Modélisation statistique avancéeÉtudes de consommation et de marchéRe : JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?Salut txnelson
Merci pour l'excellente explication. Je n'avais pas pensé au premier : in :: pour faire référence à l'espace de noms global. J'ai dû me tromper avec 14.3. Quand j'essaie maintenant, je reçois aussi l'avertissement.
Tu as écrit " et par défaut, si seul un nom est donné comme dans la déclaration d'affectation".
C'est également ce à quoi je m'attendais, mais si une colonne dans une table de données porte le même nom, JMP suppose clairement qu'il doit attribuer la valeur à la colonne.
Semble les noms par défaut ici (1) corrige ce comportement comme l'a souligné David. J'ai toujours attendu avec des noms par défaut dans l'espace de noms here car cela rend le débogage plus fastidieux. Mais à partir de maintenant, j'utiliserai toujours cette option dès le départ !
J'espère que l'équipe JMP changera ce comportement, car cela peut créer des bogues très difficiles à trouver ! Surtout, si un script fait référence à des colonnes sans : !
Re : JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?@lwx228 est incorrect.On peut avoir une variable et une colonne avec le même nom.En fait, il s'agit simplement de définir correctement la portée du nom, afin que JMP sache de quoi vous parlez
Prenez le script suivant
dt=new table("Example", new column("A") );
dt << add rows(1);
a = 13;
:: a =47;
:a[1] = a;
show(a,::a,:a[1],dt:a[1]);
Il en résulte
a = 47;
a = 47;
:A[1] = 47;
dt:a[1] = 47;
Ce qui se passe ici, c'est qu'en fait, toutes les variables et colonnes ont un nom en 2 parties, séparés par deux points " :"
namespace:name
et par défaut, si seul un nom est donné comme dans la déclaration d'affectation
a = 13;
on suppose que "a" est une variable.Si deux-points sont placés devant le nom de la variable,
:a[1] = a;
on suppose que l'on fait référence à une colonne.Dans l'exemple ci-dessus, la 1ère ligne de la colonne nommée "a" recevra la valeur actuelle (13) de la variable nommée "a".
On peut également fournir le nom complet en 2 parties pour une variable et une colonne.
Pour les variables, l'espace de noms par défaut (première partie du nom) est appelé ":".C'est vrai, deux-points, donc le nom propre complet de la variable "a" est
::a
vous pouvez voir les résultats de l'utilisation du nom complet dans l'instruction Show() et ses résultats
Le nom propre complet d'une colonne dans ce petit script est composé de la variable de pointeur affectée à la table de données et du nom réel de la colonne de la table de données
dt:a
L'instruction Show() illustre également l'utilisation du nom en 2 parties pour une colonne
J'espère que cela n'a pas seulement dérouté tout le monde, mais a plutôt donné un aperçu
Re : JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?J'ai également exécuté cela de manière incorrecte dans la version 14.3.

La seule façon d'éviter cette erreur est de se rappeler que le nom de la variable ne peut pas être le même que le nom de la colonne.
Re : JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?Je pense que le comportement dépend si global:a existe déjà. C'est ennuyant.
Re : JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?vous avez besoin
names default to here(1);
c'est ennuyeux - je ne sais pas si c'est intentionnel ; Je préférerais que les variables ne soient portées que comme nom de colonne si elles sont préfixées par deux-points (c'est-à-dire :a).
Re : JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?Intéressant. Lorsque je l'exécute en 14.3.0, je n'obtiens pas l'erreur. Je n'ai pas de versions antérieures installées.
Re : JMP 15 suppose qu'une l-value dans jsl est un nom de colonne - est-ce voulu ?Lorsque je démarre de nouvelles sessions dans JMP 14.3 et JMP 15.1 et que j'exécute votre script, j'obtiens la même erreur dans les deux versions
Cannot set value for the column 'a' because the row number (0) is not valid.