Pop-Quiz!
Frage 1
Angenommen, Sie haben eine Funktion GetCurrentValue, die den aktuellen Wert von bestimmten Benutzeroberflächenobjekten abruft und für andere fehlende (.) zurückgibt.Angenommen, Sie haben eine Liste von Schnittstellenobjekten (AllInterfaceObjects).
Ob das funktioniert?
UserValues = Transform Each({object}, AllInterfaceObjects, GetCurrentValue(object));
FilteredValues = Filter Each({value}, UserValues, !Is Missing(value));Antworten:
Mehr sehen...Hängt davon ab, ob
nett von Werten GetCurrentValue gibt zurück.
Angenommen, GetCurrentValue gibt (Checkbox << Get Selected Indices()) für Checkbox-Elemente zurück.Wenn Sie IsMissing auf die Liste der Indizes anwenden, erhalten Sie kein boolesches Literal, sondern eine Liste mit booleschen Werten.
!IsMissing({1,2,3}) = {1,1,1}Da eine Liste von booleschen Werten nicht True ist, wird sie von Filter Each entfernt!Das bedeutet, dass FilteredValue Ihre Liste nicht enthält, obwohl Ihre Liste nicht fehlte.
Frage 2
Wie Sie vielleicht wissen, ist Create Database Connection eine Funktion zum Erstellen von Datenbankverbindungen.Es gibt eine Datenbankverbindung zurück, wenn sie erfolgreich ist und fehlt, wenn sie fehlschlägt.
Funktioniert das?
connection = Create Database Connection(magicString);
if( !Is Missing(connection),
RunSomeQuery(connection),
Print("I have failed to connect")
);Antworten:
Mehr sehen...Nö.Is Missing gibt einen Fehler zurück und beschwert sich, dass numerische Werte erwartet werden.
Mein Vorschlag
Verwenden Sie fehlende (.) und fehlt disziplinierter.
- Fädeln Sie die Funktion nicht auf magische Weise durch Listen, sagen Sie mir, ob die Variable, die die Liste enthält, fehlt oder nicht.
- Wenn Is Missing Ihren Erfolg nicht verarbeiten kann, verwenden Sie das Missing nicht, um einen Fehler zu signalisieren.