.net - F# currying 具有多个参数的 .NET 标准库函数?
问题描述
根据我的书,标准的 .NET 库函数可以通过管道发送参数。
这似乎适用于单参数函数,但不适用于多参数函数,并且书中没有提到这一点。我想澄清一下为什么以下是可能的 -
"hello" |> Directory.GetCreationTime
这是一个 .NET 单参数函数。虽然以下不是:
"source" |> Directory.Move "dst"
这是一个 .NET 两个参数函数。
我知道 .NET 标准库是以非功能方式构建的,不使用 F#,但是这特别是因为这本书说可以使用管道函数调用 .NET 库,而没有指定它们需要是单个参数,这让我感到困惑.
所以我很好奇,是否可以使用 .NET 标准库函数?如果它们只是一个参数,我只能通过管道调用它们吗?
解决方案
标准库方法的实际实现可能会有所不同,但在您提供的具体示例中,该Move
函数需要一个(string*string)
— 即具有两个字符串的元组。
所以在这种情况下可以对 .NET 函数进行 curry,它应该只是一个元组。以下将起作用,尽管它在技术上仍然是一个参数:
("source","dst") |> Directory.Move
您还可以执行以下操作以与您的流程更加一致:
let mapTuple func x y = func(x,y)
"source" |> mapTuple Directory.Move "dst"
推荐阅读
- linux - 将 Greenplum 作为服务启动的问题
- python - 如何创建一个包含小时和分钟的新列?
- kubernetes - prometheus pod 重启次数不是整数
- django - 如何在没有互联网的情况下为 Django 开发设置虚拟环境?
- python - Selenium page_source 被截断
- python - 如何在 python 中为 Windows 10 上的 TensorFlow 设置带有 CUDA 的 GPU?
- oracle - 来自数组的 Oracle PL/SQL 批量更新
- c++ - 打开包含变量名的文件
- linux - 在 linux shell 脚本参数中传递特殊字符
- jenkins - 在 groovy 中解析 xml 文件