OCaml kayıtları ile ilgili çok basit bir sorum var. Ben tanımlanmış bir kayıt olduğunu varsayalım: ŞimdiOCaml dosyalarında kopyalama alanları
type r = {a:int;b:int;c:int}
let x = {a=3;b=8;c=2}
, ben x eşit tüm alanları olan bir yeni kaydı oluşturmak istiyorum ama c = 4 olan varsayalım. Ben yazabilirsiniz:
let y = {a=3;b=8;c=4}
ancak = 3 ve b = 8 yeniden yazmaya orada gerek çünkü bu can sıkıcı. Yazabilirim:
let y = {a=x.a;b=x.b;c=4}
Ancak, kayıtta birçok alan varsa bu hala iyi değil.
let y = {x with c=4}
gibi bir şey yazmanın herhangi bir yolu var mı?
Yardımlarınız için çok teşekkürler.
En iyi ürün, Surikator.
Lol ... Nasıl olur ?! Harika şeyler. Teşekkürler! – Surikator
Evet, sahip olduğunuz oldukça etkileyici sezgi. – nlucaroni
Belirli bir tür tanımı için, '{x with c = 4}', {a = x.a; b = x.b; c = 4} 'ile eşdeğerdir. Ancak, bir alanı eklemek veya kaldırmak için kayıt türünü değiştirirseniz, derleyici, sizden istediklerinizi isteyip istemediğinizi belirten, ilk hakkında sizi uyarmayacaktır. İki gösterim arasında seçim yapmanız gereken budur. –