Typ-Wert Kompatibilität
Syntax
isCompatibleValue($value, $target)
Beschreibung
Prüft ob ein Wert value mit einem Zieltyp target kompatibel ist. Dabei kann target ein Objekttyp (my.module:MyClass), ein Attributtyp (my.module:MyClass#attribute) oder ein primitiver Typ (z.B. `tl.core:String`) sein. Bei Attributtypen werden zusätzlich die definierten Bedingungen wie Pflichtfeld (mandatory) und Mehrfachwerte (multiple) berücksichtigt. Value kann ein einzelner Wert oder eine Sammlung sein. Bei Sammlungen wird überprüft, ob alle enthaltenen Elemente mit dem Zieltyp kompatibel sind.
Parameter
| Name | Typ | Beschreibung | Pflicht | Default |
|---|---|---|---|---|
| value | Any | Der zu prüfende Wert, kann ein einzelner Wert oder eine Sammlung sein. | ja | |
| target | Typ | Der Zieltyp, mit dem der Wert kompatibel sein soll. Kann ein Objekttyp (z.B. my.module:MyClass), ein Attributtyp (z.B. my.module:MyClass#attribute) oder ein primitiver Typ (String, Double, Boolean, etc.) sein. |
ja |
Rückgabewert
Typ: Wahrheitswert
true wenn der Wert im angegebenen Zieltyp verwendbar ist. Das bedeutet konkret:
- Bei einfachen Typen (wie Zahlen, Text): Der Wert kann in diesem Datentyp gespeichert werden
- Bei Objekttypen: Das Objekt ist mit dem Zieltyp kompatibel
- Bei Attributen: Der Wert erfüllt alle Bedingungen des Attributs (z.B. Pflichtfeld) und passt zum Attributtyp
Beispiele
// Prüfung von Zahlen mit verschiedenen Typen
isCompatibleValue(123, `tl.core:Integer`) // true
isCompatibleValue(123.99, `tl.core:Double`) // true
// Prüfung von Text
isCompatibleValue("test", `tl.core:String`) // true
isCompatibleValue("123", `tl.core:Integer`) // false
// Prüfung von Wahrheitswerten
isCompatibleValue(true, `tl.core:Boolean`) // true
// Prüfung von Objekten
{
objektB = all(`test.isCompatibleValue:B`).firstElement();
isCompatibleValue($objektB, `test.isCompatibleValue:B`); // true - Objekt passt zum eigenen Typ
}
// Prüfung von Listen
isCompatibleValue([123, 456], `tl.core:Integer`) // true - alle Elemente sind kompatibel
// Prüfung mit Attributen (nicht-Pflichtfeld, mehrere Werte erlaubt)
{
objektB = all(`test.isCompatibleValue:B`).firstElement();
isCompatibleValue([$objektB], `test.isCompatibleValue:A#nonMandatoryMultipleClassB`); // true
}
// Prüfung mit Attributen (Pflichtfeld, nur ein Wert erlaubt)
{
objektB = all(`test.isCompatibleValue:B`).firstElement();
isCompatibleValue($objektB, `test.isCompatibleValue:A#mandatoryNonMultipleClass`); // true
isCompatibleValue(null, `test.isCompatibleValue:A#mandatoryNonMultipleClass`); // false - null ist bei Pflichtfeld nicht erlaubt
}