gpt4 book ai didi

F#:实现内联方法(在接口(interface)上)以避免使用真实类型

转载 作者:行者123 更新时间:2023-12-05 08:44:32 26 4
gpt4 key购买 nike

我正在尝试查看是否可以将内联应用于已实现的方法,以便不必拼写输入的特定类型。我已经用一种(非继承/实现的)方法完成了这项工作,但也尝试使用接口(interface)来完成。

type public IBookInteraction = 
abstract inline CreateBook : 'a -> MethodResult<BasicBookModel>


type public BookInteraction(?userInteraction) =

interface IBookInteraction with

member inline x.CreateBook(bookModel) =
let userId = (^a : (member UserId : Int32 with get) (bookModel))

MethodResult<BasicBookModel>()

我猜有一种方法可以做到这一点,但它不适用于接口(interface)方法签名中的通用运算符(?)。

最佳答案

我不相信有抽象的内联方法是可能的。即使你可以,你的代码也不会工作,因为你的接口(interface)定义 promise 用户可以用任何 'a 调用它。 , 但您的实现在 'a 上放置了一个静态成员约束- 在 F# 支持抽象内联方法的假设世界中,接口(interface)上的方法声明也需要包含约束。

无论如何,要了解为什么 F# 不可能支持抽象内联方法,请考虑 inline意思是:您为实现该方法而编写的代码实际上将被复制并粘贴到调用站点中。但是,对于抽象方法,您不知道定义该方法实现的具体类型,因此无法在编译时确定您应该内联哪些代码!

关于F#:实现内联方法(在接口(interface)上)以避免使用真实类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8509664/

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