gpt4 book ai didi

.net - 如何在 F# 中为 .NET 函数命名

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

因此,在 F# 中,函数应该是一等公民,因为它是一种函数式编程语言并且可以被引用。

所以我可以做到这一点

    let double x = x * 2

let times2 = double

现在 times2 是 double 的别名,并且具有相同的函数签名整数 -> 整数

为什么我不能这样做来为 .NET 函数设置别名?

   let write = System.IO.File.WriteAllLines

如果我尝试这样做,它会认为我缺少一个参数,但实际上我并没有尝试调用该函数,而是尝试给它起别名。

The member or object constructor 'WriteAllLines' does not take 1 argument(s). An overload was found taking 2 arguments.

有没有办法为预定义的 .NET 函数设置别名,还是不可能?

最佳答案

其实 System.IO.File.WriteAllLines 不是 F# 语法函数。它是一个静态成员,因此它可以(并且确实是)重载。然后编译器不知道要选择哪个重载,他只需要你的额外提示。

您可以提供参数:

let write x y = System.IO.File.WriteAllLines(x, y)

或一些类型注释:

let write  = System.IO.File.WriteAllLines : _ * _ -> _

解析为唯一的重载。

关于.net - 如何在 F# 中为 .NET 函数命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28229603/

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