Pregunta

Tengo este tipo de registro:

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

¿Qué sucede si quiero crear una instancia de una sílaba donde solo se define el núcleo? ¿Puedo darle un valor predeterminado? ¿El valor predeterminado es [] o algo así?

¿Fue útil?

Solución

Creo que es una mejor idea usar " opcional " campos.

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

De esa manera, puede definir lo que necesita.

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

Creo creo esa es la sintaxis.

Otros consejos

Solo para aclarar la respuesta de newacct, aquí hay un ejemplo

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

let choose_only_nucleus nucleus =
   { default_syllable with nucleus = nucleus }

No, no creo que puedas dejar las cosas sin definir. Los valores no inicializados causan todo tipo de problemas en lenguajes como C, por lo que se evita en OCaml. (Aunque hay algunas funciones en la biblioteca estándar que dejan algunas cosas sin definir, como String.create , no creo que pueda hacerlo usted mismo).

Tendría que completar todos los campos usted mismo (y usar la lista vacía [] o algo así para valores que no le interesan), o usar un valor preexistente de este tipo y use la sintaxis de actualización de registros para crear un nuevo registro con los campos que le interesan cambiados y los otros copiados del registro preexistente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top