gpt4 book ai didi

f# - 将元组输入到 printfn 等函数中

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

我想给 printf 一个元组功能:

let tuple = ("Hello", "world")
do printfn "%s %s" tuple

这当然行不通,编译器首先说它需要 string而不是 string*string .我写如下:
let tuple = ("Hello", "world")
do printfn "%s %s" <| fst tuple

然后编译器合理地指出,现在我有 string -> unit 类型的函数值.说得通。我可以写
let tuple = ("Hello", "world")
do printfn "%s %s" <| fst tuple <| snd tuple

它对我有用。但我想知道,是否有任何方法可以做得更好,比如
let tuple = ("Hello", "world")
do printfn "%s %s" <| magic tuple

我的问题是我无法获得 printf 需要哪种类型才能打印两个参数。
什么可以 magic功能是什么样的?

最佳答案

你要

let tuple = ("Hello", "world")   
printfn "%s %s" <|| tuple
注意双 ||<||而不是一个 |<|见: <||
你也可以做
let tuple = ("Hello", "world")
tuple
||> printfn "%s %s"
还有其他类似的 operators|> , ||> , |||> , <| , <|| , 和 <||| .
使用 fst 的惯用方式和 snd
let tuple = ("Hello", "world")
printfn "%s %s" (fst tuple) (snd tuple)
您通常看不到使用 ||> 或 <|| 之一传递给函数的元组的原因运营商是因为所谓的 解构 .
破坏表达式采用复合类型并将其分解为多个部分。
所以对于 tuple ("Hello", "world")我们可以创建一个析构函数,将元组分成两部分。
let (a,b) = tuple
我知道这对于 F# 的新手来说可能看起来像一个元组构造函数,或者可能看起来更奇怪,因为我们绑定(bind)了两个值(注意我说的是绑定(bind)而不是赋值),但它需要具有两个值的元组并对其进行解构分成两个不同的值。
所以在这里我们使用解构表达式来完成它。
let tuple = ("Hello", "world")
let (a,b) = tuple
printfn "%s %s" a b
或更常见的
let (a,b) = ("Hello", "world")
printfn "%s %s" a b

关于f# - 将元组输入到 printfn 等函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20568309/

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