Qu'est-ce qui a inspiré cette demande de liste de souhaits ?
JMP dispose de plusieurs manières différentes d'indiquer si les valeurs sont vides, manquantes ou nulles et les fonctions/opérations peuvent renvoyer différents types lorsqu'elles n'ont pas de valeur par rapport à lorsqu'elles en ont (et en Python, la méthode "pythonique" serait simplement de vérifier la valeur dans l'instruction If car les objets seront faux (Types intégrés/Test de valeur de vérité ).
Quelle est l’amélioration que vous souhaiteriez voir ?
Fonction JSL plus universelle pour vérifier si la valeur est vide/manquante/nulle/n'a aucune valeur. Vous trouverez ci-dessous un exemple de fonction (j'espère que d'autres auront des idées supplémentaires) :
Names Default To Here(1);
Is None = function({obj, keep_zero = 1}, {Default Local},
/*"""Attempt to check if object is None (Empty(), ., 0, "", {}, [], [=>], [](0,1)...
Args:
obj: object to check
Returns:
int: 0 if non-zero and 1 if zero
Examples:
>> show(Is None([1 => 2]));
Is None([1 => 2]) = 0;
>> show(Is None(Associative Array()));
Is None(Associative Array()) = 1;
"""*/
cur_type = Type(obj);
return(
If(Contains({"List", "Matrix", "Associative Array"}, cur_type), // check items in list, matrix and associative array
!N Items(obj);
, cur_type == "String",
!Length(obj); // check string length, Is Missing() should also work
, Contains({"Integer", "Number"}, cur_type),
If(IsMissing(obj),
1
, keep_zero & obj == 0,
1
,
0
);
, cur_type == "Empty",
1;
,
0;
);
);
);
Print("Zeros:");
show(Is None([1 => 2]));
show(Is None({"a"}));
show(Is None([1]));
show(Is None(1));
show(Is None("a"));
Write("\!N");
Print("Ones:");
show(Is None(Associative Array()));
show(Is None({}));
show(Is None([]));
show(Is None(0));
show(Is None(""));
show(Is None(.));
show(Is None(Empty()));
Pourquoi cette idée est-elle importante ?
Facilite la création de comparaisons sans deviner quelle vérification doit être implémentée cette fois-ci (IsMissing(), Is Empty(), N Items() > 0, Zero Or Missing()...)