小编Mar*_*maa的帖子

在FSharp.Core中没有记录`when`关键字用法

寻找有关内联函数的静态解析类型参数的信息,我偶然发现了FSharp.Core 中各种原始运算符的定义:

let inline (+) (x: ^T) (y: ^U) : ^V = 
     CheckedAdditionDynamic<(^T),(^U),(^V)>  x y 
     when ^T : int32       and ^U : int32      = (# "add.ovf" x y : int32 #)
     when ^T : float       and ^U : float      = (# "add" x y : float #)
     // <snip>
     when ^T : ^T = ((^T or ^U): (static member (+) : ^T * ^U -> ^V) (x,y))
Run Code Online (Sandbox Code Playgroud)

从上面的代码片段中可以看出,when关键字的使用格式为:when expr1 = expr2适用于各种内置类型.我猜这是某种编译器相当于"如果T = int使用opcode add.ovf,否则如果......,否则就这样做". …

f#

20
推荐指数
1
解决办法
466
查看次数

标签 统计

f# ×1