Question

J'ai ce type d'enregistrement:

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

Et si je veux instancier une syllabe où seul le noyau est défini? Puis-je lui donner une valeur par défaut? Est-ce que par défaut est [] ou quelque chose comme ça?

Était-ce utile?

La solution

Je pense que c'est une meilleure idée d'utiliser "facultatif". champs.

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

Ainsi, vous pourrez définir ce dont vous avez besoin.

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

Je pense que ce soit la syntaxe.

Autres conseils

Juste pour clarifier la réponse de newacct, voici un exemple

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

let choose_only_nucleus nucleus =
   { default_syllable with nucleus = nucleus }

Non, je ne pense pas que vous puissiez laisser les choses indéfinies. Les valeurs non initialisées causent toutes sortes de problèmes dans des langages tels que C et sont donc évitées dans OCaml. (Bien que la bibliothèque standard comporte quelques fonctions laissant certaines choses indéfinies, telles que String.create , je ne pense pas que vous puissiez le faire vous-même.)

Vous devez soit remplir tous les champs vous-même (et utiliser la liste vide [] , ou quelque chose comme ça pour les valeurs qui ne vous intéressent pas), ou utiliser une valeur préexistante. de ce type et utilisez la syntaxe de mise à jour de l'enregistrement pour créer un nouvel enregistrement avec les champs qui vous intéressent modifiés et les autres copiés à partir de l'enregistrement préexistant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top