gpt4 book ai didi

f# - F# 中仿函数的替代方案

转载 作者:行者123 更新时间:2023-12-04 05:49:42 26 4
gpt4 key购买 nike

我想写以下内容:

module A =
type Token
let foo Token =

module B =
type Token
let foo Token =

let run (m : module) =
m.B
|> m.foo

基本上是模块中通用的功能。有没有办法在 F# 中做到这一点?

最佳答案

正如 kvb 在评论中指出的那样,如果没有一个实际的例子,很难给出答案,因为最好的方法取决于你实际想要做什么。

在这个简单的例子中,我可能会使用 F# 接口(interface)来表示 Token并添加 Foo作为成员(member)。假设 Foo返回 int ,你可以这样写定义:

type Token = 
abstract Foo : unit -> int

然后,您可以使用类(非常重量级)或使用对象表达式来实现不同的标记。例如:
let tok = { new Token with
member x.Foo () = 42 }

与您的 run 对应的代码函数只是调用 Foo成员(member): tok.Foo()

关于f# - F# 中仿函数的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228894/

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