Frage

Ich habe diesen Satzart:

type syllable = {onset: consonant list; nucleus: vowel list; coda: consonant list};;

Was passiert, wenn ich will eine Silbe instanziieren, wo nur der Kern definiert ist? Kann ich es einen Standardwert geben? Ist es auf [] oder so etwas wie das Standard?

War es hilfreich?

Lösung

Ich denke, es ist eine bessere Idee „optional“ Felder zu verwenden.

type syllable = {onset: consonant list option; nucleus: vowel list option; coda: consonant list option};;

Auf diese Weise können Sie festlegen, was Sie brauchen.

{onset = Some [consonant, consonant, ...],
 nucleus = None,
 coda = Some [consonant, consonant, consonant, ...]}

I denkt das ist die Syntax.

Andere Tipps

Nur um newacct Antwort klarer, hier ist ein Beispiel

let default_syllable = { onset = []; nucleus = []; coda = [] }

let choose_only_nucleus nucleus =
   { default_syllable with nucleus = nucleus }

Nein, ich glaube nicht, dass Sie nicht definiert verlassen können Dinge. Nicht initialisierte Werte verursachen alle möglichen Probleme in Sprachen wie C und so ist es in OCaml vermieden. (Obwohl es einige Funktionen in der Standard-Bibliothek ist, dass einige Dinge nicht definiert, wie String.create verläßt, ich glaube nicht, dass Sie es selbst tun können.)

würden Sie müssen entweder selbst in allen Feldern ausfüllen (und die leere Liste [] oder so ähnlich für Werte, die Sie nicht interessieren), oder einen bereits vorhandenen Wert dieser Art verwenden und den Rekord Update verwenden Syntax einen neuen Datensatz mit den Feldern erstellen Sie verändert sich interessieren, und die anderen aus dem bereits vorhandenen Datensatz kopiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top