Tom*_*cek 23
从概念上讲,函数记录与接口非常相似,大多数情况下,您可以使用它们来解决给定的问题(因此这是一个非常有效的问题).
如果你只看技术方面,那么最大的区别是接口可以有通用的方法.这是使用记录无法完成的事情 - 例如,无法定义与以下内容对应的简单函数记录:
type IFoo<'T> =
abstract Bar<'R> : 'R -> 'T
Run Code Online (Sandbox Code Playgroud)
但是,在实践中,我认为更重要的差异与互操作性和设计有关:
{ oldValue with NewFunction = newFunction }
构造来替换一个函数,则记录很好.一般来说,当我需要在某些数据结构的递归处理期间保持某些状态时,我主要使用记录,并且我需要with
构造.对于公共API,我认为使用接口和简单类比使用记录更好的抽象.