Pergunta

Eu tenho esse tipo de registro:

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

E se eu quiser para instanciar uma sílaba onde apenas o núcleo é definido? Posso dar-lhe um valor padrão? Será que o padrão para [] ou algo assim?

Foi útil?

Solução

Eu acho que é uma idéia melhor para usar campos "opcionais".

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

Dessa forma, você pode definir o que você precisa.

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

I pensar que é a sintaxe.

Outras dicas

Só para ter a resposta de newacct mais clara, aqui está um exemplo

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

let choose_only_nucleus nucleus =
   { default_syllable with nucleus = nucleus }

Não, eu não acho que você pode deixar as coisas indefinidas. valores não inicializadas causar todo tipo de problemas em linguagens como C e assim evita-se em OCaml. (Embora haja algumas funções da biblioteca padrão que deixa algumas coisas indefinidos, como String.create, eu não acho que você pode fazê-lo sozinho.)

Você teria que quer preencher todos os campos si mesmo (e usar o [] lista vazia ou algo parecido para valores que não se preocupam com), ou use um valor pré-existente deste tipo e usar a atualização de registro sintaxe para criar um novo registro com os campos que se preocupam mudou, e os outros copiada do registro pré-existente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top