13
实践中的区别是什么?为什么你会用另一个呢? 似乎这两种类型都将用于解决相同的问题。界面与功能记录
我的问题,如果只涉及功能的F#代码。对于暴露于外部团体的F#组件,我发现Component Design Guidelines建议在函数记录中更喜欢使用接口。
实践中的区别是什么?为什么你会用另一个呢? 似乎这两种类型都将用于解决相同的问题。界面与功能记录
我的问题,如果只涉及功能的F#代码。对于暴露于外部团体的F#组件,我发现Component Design Guidelines建议在函数记录中更喜欢使用接口。
从概念上讲,函数记录与接口非常相似,大多数时候,你可以使用它们来解决给定的问题(所以这是一个很好的&有效问题)。
如果你只看技术方面,那么最大的区别就是接口可以有通用的方法。这事不能使用记录来完成 - 例如,没有办法定义功能的简单的记录,将对应于以下内容:
type IFoo<'T> =
abstract Bar<'R> : 'R -> 'T
然而,在实践中,我觉得更重要的区别是有关的互操作性和设计:
{ oldValue with NewFunction = newFunction }
构造来替换一个函数,则记录很不错。一般来说,我主要使用记录,当我需要保持一些状态,例如,递归处理某些数据结构,我需要with
构造。对于公共API,我相信使用接口和简单的类比使用记录更好的抽象。