OpenSCAD Benutzerhandbuch/Prüffunktionen
is_undef
[Bearbeiten]"is_undef" prüft, ob ein Wert "undef" ist – und zwar ohne Warnung, selbst wenn die Variable noch nicht definiert wurde.
Beispiel:
// Keine Warnung, auch wenn 'a' nicht existiert!
if (is_undef(a)) {
// Code für den Fall, dass 'a' nicht gesetzt ist
}
// Alternativ (aber mit Warnung!):
if (a == undef) { ... } // → WARNING: Ignoring unknown variable 'a'.
Das ist besonders nützlich für optionale Parameter oder Spezialvariablen:
exploded = is_undef($exploded) ? 0 : $exploded; // 0 = normal, 1 = Explosionsansicht
Für ältere OpenSCAD-Versionen kannst du "is_undef" so emulieren (allerdings mit Warnung):
function is_undef(a) = (undef == a);
---
is_list
[Bearbeiten]Gibt "true" zurück, wenn der Parameter eine Liste (Vektor) ist – auch leere Listen "[]" zählen dazu.
Beispiele:
echo("→ true:");
echo(is_list([])); // true
echo(is_list([1])); // true
echo(is_list([1,2])); // true
echo(is_list([true])); // true
echo(is_list([1,2,[5,6],"test"])); // true
echo("--------");
echo("→ false:");
echo(is_list(1)); // false
echo(is_list(1/0)); // false (Inf)
echo(is_list((1/0)/(1/0))); // false (NaN)
echo(is_list("test")); // false
echo(is_list(true)); // false
echo(is_list(false)); // false
echo("--------");
echo("→ Warnungen:");
echo(is_list()); // zu wenige Argumente
echo(is_list(1,2)); // zu viele Argumente
---
is_num
[Bearbeiten]Prüft, ob ein Wert eine Zahl ist – inklusive "Inf" und "-Inf", aber nicht "NaN".
Beispiele:
echo("Zahlen → true:");
echo(is_num(0.1)); // true
echo(is_num(1)); // true
echo(is_num(10)); // true
echo(is_num(+1/0)); // true (+Inf)
echo(is_num(-1/0)); // true (-Inf)
echo("Keine Zahlen → false:");
echo(is_num(0/0)); // false (NaN)
echo(is_num((1/0)/(1/0))); // false (NaN)
echo(is_num([])); // false
echo(is_num([1])); // false
echo(is_num("test")); // false
echo(is_num(false)); // false
echo(is_num(undef)); // false
---
is_bool
[Bearbeiten]Gibt "true" zurück, wenn der Wert exakt "true" oder "false" ist.
Beispiele:
echo("→ true:");
echo(is_bool(true)); // true
echo(is_bool(false)); // true
echo("→ false:");
echo(is_bool([])); // false
echo(is_bool([1])); // false
echo(is_bool("test")); // false
echo(is_bool(0.1)); // false
echo(is_bool(1)); // false
echo(is_bool(10)); // false
echo(is_bool(0/0)); // false (NaN)
echo(is_bool((1/0)/(1/0))); // false (NaN)
echo(is_bool(1/0)); // false (Inf)
echo(is_bool(-1/0)); // false (-Inf)
echo(is_bool(undef)); // false
---
is_string
[Bearbeiten]Prüft, ob der Wert eine Zeichenkette ist – auch leere Strings """" gelten als String.
Beispiele:
echo("→ true:");
echo(is_string("")); // true
echo(is_string("test")); // true
echo("→ false:");
echo(is_string(0.1)); // false
echo(is_string(1)); // false
echo(is_string(10)); // false
echo(is_string([])); // false
echo(is_string([1])); // false
echo(is_string(false)); // false
echo(is_string(0/0)); // false (NaN)
echo(is_string((1/0)/(1/0))); // false (NaN)
echo(is_string(1/0)); // false (Inf)
echo(is_string(-1/0)); // false (-Inf)
echo(is_string(undef)); // false
---
is_function
[Bearbeiten]Prüft, ob es sich um einen Funktionsausdruck (Lambda) handelt – funktioniert nicht mit normalen Funktionsdefinitionen oder eingebauten Funktionen.
Beispiele:
echo(is_function(function(x) x*x)); // ECHO: true
func = function(x) x+x;
echo(is_function(func)); // ECHO: true
function f(x) = x;
echo(is_function(f)); // → WARNING + ECHO: false
---
is_object
[Bearbeiten]Gibt "true" zurück, wenn das Argument ein Objekt ist (also eine Sammlung von Schlüssel-Wert-Paaren), sonst "false".