f# - 在 F# 中实现两个不兼容的接口的 InfluxValueField
问题描述
引用 Nuget 包AdysTech.InfluxDB.Client.Net.Core
,此代码将无法编译。如何更改它以使其编译?
open AdysTech.InfluxDB.Client.Net
let event1 = InfluxDatapoint<'T>()
let field1 = InfluxValueField(42.99) // :> IComparable<InfluxValueField>
let addFields () =
event1.Fields.Add("amountRequestedUSD", field1) // //Error FS0001 The type 'InfluxValueField' is not compatible with the type 'IComparable<InfluxValueField>'.
的定义IInfluxValueField
是公共接口 IInfluxValueField : IComparable, IComparable 的 IInfluxValueField。
的定义InfluxValueField
是公共类 InfluxValueField : IInfluxValueField。
似乎 F# 在处理这种实现两个接口的类型时遇到了麻烦,但它当然不应该有任何问题。
您还可以在https://github.com/ScottHutchinson/InfluxDBFSharpClient获取包含此代码的解决方案
这是Weird C# / F# difference in a declaration, code compile in C# but not in F# 中问题的简化版本
解决方案
F# Software Foundation 的成员提供了这个答案。
open AdysTech.InfluxDB.Client.Net
let event1 = InfluxDatapoint<IInfluxValueField>()
let field1 = InfluxValueField(42.99)
let addFields () =
event1.Fields.Add("amountRequestedUSD", field1)
推荐阅读
- graphql - 如何在 GraphQL 上添加适配器以在模式中将蛇案例转换为骆驼案例
- javascript - Sanctuary js 执行 2 步有条件的管道
- light-4j - 是否可以在 light-4j 请求中显示额外的查询参数返回错误
- azure-devops - Azure DevOps Backlogs:如何处理子功能(功能中的功能)?
- ruby - 为什么 let(:counter) { 0 } 在示例中返回 nil?
- scala - 运行后台任务以更新缓存
- excel - 如果公式返回包含“@”的值,则返回空白
- objective-c - 如何制作一个支持 Swift 导入的 Objective-C 静态链接框架
- react-native - 深度链接到具有不同参数的已打开屏幕。可能吗?
- c++ - 内联变量的多次破坏