Zum Inhalt springen

OpenSCAD Benutzerhandbuch/Prüffunktionen

Aus Wikibooks

is_undef

[Bearbeiten]

Vorlage:Requires

"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]

Vorlage:Requires

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]

Vorlage:Requires

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]

Vorlage:Requires

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]

Vorlage:Requires

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]

Vorlage:Requires

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]

Vorlage:Requires

Gibt "true" zurück, wenn das Argument ein Objekt ist (also eine Sammlung von Schlüssel-Wert-Paaren), sonst "false".