gpt4 book ai didi

f# - 接口(interface)与功能记录

转载 作者:行者123 更新时间:2023-12-03 13:29:58 28 4
gpt4 key购买 nike

实践上有什么不同?你为什么要使用一个而不是另一个?
似乎这两种类型都可以用来解决相同的问题。

我的问题仅涉及功能性 F# 代码。对于暴露给外部方的 F# 组件,我发现 Component Design Guidelines建议首选接口(interface)方法而不是功能记录。

最佳答案

从概念上讲,函数记录与接口(interface)非常相似,并且大多数时候,您可以同时使用它们来解决给定的问题(所以这是一个很好且有效的问题)。

如果只看技术方面,那么最大的区别就是接口(interface)可以有泛型方法。这是使用记录无法完成的事情 - 例如,无法定义与以下对应的函数的简单记录:

type IFoo<'T> =
abstract Bar<'R> : 'R -> 'T

但是,在实践中,我认为更重要的区别与互操作性和设计有关:
  • 接口(interface)与 C# 和其他 .NET 组件很好地互操作
    (从 C# 构造函数的 F# 记录会非常困难和丑陋)
  • 接口(interface)表达了不同的意图——它们是可以满足和实现的接口(interface)。
    另一方面,记录是函数的集合,它们是
    创建的。
  • 如果您需要使用 { oldValue with NewFunction = newFunction },记录很好。构造来代替一项功能。

  • 一般来说,当我需要保持一些状态时,我主要使用记录,例如一些数据结构的递归处理,我需要 with构造。对于公共(public) API,我相信使用接口(interface)和简单的类比使用记录更好的抽象。

    关于f# - 接口(interface)与功能记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982705/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com