gpt4 book ai didi

f# - 请解释这个语法

转载 作者:行者123 更新时间:2023-12-05 01:31:33 24 4
gpt4 key购买 nike

来自 answer by kvb关于如何调用隐式转换运算符:

let inline (!>) (x:^a) : ^b = ((^a or ^b) : (static member op_Implicit : ^a -> ^b) x)

我了解 F# 有一段时间了,但我只是不知道如何解析这里的实现。什么是(^a 或 ^b)?那之后的东西呢?请复习一下每个部分在语法上代表什么。

最佳答案

^a 或 ^b 字面意思是“^a^b”。

冒号 : 表示“有”或“包含于”,这取决于您如何看待它。

所以整个表达式 (^a or ^b) : (static member op_Implicit : ^a -> ^b) 表示“名为“op_Implicit”的静态成员类型为 ^a -> ^b 并在类型 ^a 或类型 ^b 上定义”。整个表达式最终求值为 ^a -> ^b 类型的函数。

然后,放在该表达式右侧的 x 表示“函数应用程序”,就像在通常的 F# 语法中一样。

所以整个事情放在一起意味着“在类型 ^a 或类型 ^b 上,找到一个名为“op_Implicit”且类型为 ^ 的静态成员a -> ^b,并将该成员应用于参数 x”。

有关静态解析约束的更多讨论,请参阅 this answerthis MSDN article .

关于f# - 请解释这个语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392153/

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