gpt4 book ai didi

f# - "Unexpected type arguments"是什么意思?

转载 作者:行者123 更新时间:2023-12-04 02:54:00 25 4
gpt4 key购买 nike

我有以下代码

module File1

let convert<'T> x = x

type myType () =
member this.first<'T> y =
convert<'T> y
member this.second<'T> ys =
ys
|> Seq.map this.first<'T>

在最后'T我收到错误 Unexpected type arguments .例如,当我调用 let x = myType.first<int> "34" 时没有警告,一切都按预期工作。保留类型参数会消除警告,程序有时会按预期运行。

谁能解释一下这是怎么回事?

谢谢

最佳答案

简而言之,您需要为带有类型参数的方法显式参数。可以通过更改

来修复错误
ys
|> Seq.map this.first<'T>

ys
|> Seq.map (fun y -> this.first<'T> y)

错误在this excellent answer 中解释得很清楚。 ,这里不再赘述。请注意,错误消息已在 F# 2.0 和 F# 3.0 之间更改。

您实际上并没有在类型签名中的任何地方使用 'T,因此您可以毫不费力地删除 'T

如果您需要查询类型,我建议使用上面 Tomas 的回答中的技术。

type Foo() = 
member this.Bar (t:Type) (arg0:string) = ()

let f = new Foo()
"string" |> f.Bar typeof<Int32>

关于f# - "Unexpected type arguments"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17024785/

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