Tengo una pregunta muy básica sobre registros OCaml. Supongamos que tengo un registro definido:Copiando campos en OCaml
type r = {a:int;b:int;c:int}
let x = {a=3;b=8;c=2}
Ahora, supongamos que desea crear un nuevo registroque tiene todos los campos iguales a x pero que tiene c = 4. Podría escribir:
let y = {a=3;b=8;c=4}
pero esto es molesto porque no hay necesidad de volver a escribir a = 3 yb = 8. También podría escribir:
let y = {a=x.a;b=x.b;c=4}
pero esto todavía no es bueno si el registro tiene muchos campos. ¿Hay alguna forma de escribir algo como:
let y = {x with c=4}
o algo por el estilo?
Muchas gracias por cualquier ayuda.
Todo lo mejor, Surikator.
Lol ... ¿Qué tal eso ?! Buena cosa. ¡Gracias! – Surikator
Sí, bastante intuición impresionante que tienes allí. – nlucaroni
Para una definición de tipo dada, '{x con c = 4}' es equivalente a '{a = x.a; b = x.b; c = 4}'. Sin embargo, si cambia el tipo de registro para agregar o eliminar un campo, el compilador no le advertirá sobre el primero, que puede ser exactamente lo que quiere o no lo que quiere. Así es como debes elegir entre las dos notaciones. –