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
}