Was hat diese Wunschlistenanfrage inspiriert?
JMP bietet mehrere verschiedene Möglichkeiten, um anzuzeigen, ob Werte leer, fehlend oder null sind, und Funktionen/Operationen können andere Typen zurückgeben, wenn sie keine Werte haben, als wenn sie welche haben (und in Python würde die „pythonische“ Möglichkeit darin bestehen, einfach den Wert in der If-Anweisung zu prüfen, da die Objekte „false“ sind (integrierte Typen/Wahrheitswertprüfung ).
Welche Verbesserung würden Sie sich wünschen?
Universellere JSL-Funktion zum Prüfen, ob der Wert leer/fehlt/null ist/keinen Wert hat. Unten sehen Sie ein Beispiel für die Funktion (hoffentlich haben andere zusätzliche Ideen):
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()));
Warum ist diese Idee wichtig?
Erleichtert das Erstellen von Vergleichen, ohne zu raten, welche Prüfung dieses Mal implementiert werden soll (IsMissing(), Is Empty(), N Items() > 0, Zero Or Missing()...)