gpt4 book ai didi

f# - F#-我可以将类型名称用作充当默认构造函数的函数吗?

转载 作者:行者123 更新时间:2023-12-04 13:17:14 25 4
gpt4 key购买 nike

要创建我类的序列,

type MyInt(i:int) =
member this.i = i

[1;2;3] |> Seq.map(fun x->MyInt(x))
fun x->MyInt(x)似乎是多余的。如果我能写 Seq.map(MyInt)会更好

但是我不能。我可以想到的一种解决方法是定义一个单独的函数
let myint x = MyInt(x)
[1;2;3] |> Seq.map(myint)

有一个更好的方法吗?

最佳答案

简而言之,不。

对象构造函数不是F#中的一流函数。这是不使用类的另一个原因,在这里最好使用有区别的联合:

type myInt = MyInt of int
let xs = [1;2;3] |> Seq.map MyInt

如果您不喜欢显式lambda,则序列表达式在您的示例中看起来会更好:
let xs = seq { for x in [1;2;3] -> MyInt x }

或者,您的解决方法是一个不错的解决方案。

关于f# - F#-我可以将类型名称用作充当默认构造函数的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094324/

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