Kavramsal olarak, kayıtların kayıtları arayüzlere çok benzer ve çoğu zaman, belirli bir sorunu çözmek için her ikisini de kullanabilirsiniz (yani bu harika bir & geçerli soru).
Teknik yönlerden sadece bakarsanız, o zaman en büyük fark, arayüzlerin genel yöntemlere sahip olabilmesidir.
type IFoo<'T> =
abstract Bar<'R> : 'R -> 'T
Ancak uygulamada, daha önemli farklar olduğunu düşünüyorum: örneğin, aşağıdaki karşılık gelir fonksiyonların basit bir kayıt tanımlamak için bir yolu yoktur - Bu kayıtları kullanılarak yapılamaz şeydir birlikte çalışma ve tasarımı ile ilgili:
- Arayüzler C# ve diğer NET bileşenleri
(çok zor olurdu C# gelen fonksiyonların bir F # kaydını inşası ve çirkin) ile güzel birlikte çalışan
- Arayüzler farklı bir niyeti ifade - Bunlar tatmin edilebilecek ve uygulanabilecek arayüz. Öte yandan
, kayıtları oluşturulan işlevlere topluluklarıdır. Bir işlevi yerine { oldValue with NewFunction = newFunction }
inşaat kullanmanız gerekiyorsa
- Kayıtlar güzel.
Genelde, örneğin, örn. yinelemeli bir veri yapısının işleme ve with
yapı gerekir. kamu API için, ben arabirimleri ve basit sınıfları kullanarak kayıtları kullanılarak daha iyi soyutlama olduğuna inanıyoruz.