非常简单的例子:
let myfun x = x
let inline myfun x = x
^a
?let inline myfun (x: 'b) = x
let inline myfun (x: ^b) = x
由于智能感知从不显示^b
,我应该在FSI中寻找^b
作为“静态解决”的指标吗?
inline
是否保证“静态解决”?
答案 0 :(得分:1)
Inline允许但不强制静态解析类型,这就是案例2中的原因。它与案例1中的相同。
我认为在大多数情况下,即使您没有指定^
,类型推断也足够聪明,可以猜测该类型是否应该被静态解析。
例如,如果您在第3种情况下将函数体更改为sqrt x
,则会获得
> let inline myfun (x: 'b) = sqrt x;;
val inline myfun : ^b -> ^a when ^b : (static member Sqrt : ^b -> ^a)
我个人总是试着在第一次尝试时不明确指定类型,然后我检查我是否对推理感到满意,如果我不是那么我尝试添加内联,但不是帽子类型。
为什么intellisense有时会显示不同的东西?这可能是个小虫子。