Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 强制执行显式类型参数_F#_Inline - Fatal编程技术网

F# 强制执行显式类型参数

F# 强制执行显式类型参数,f#,inline,F#,Inline,我有一个泛型函数,它很容易让编译器推断出错误的类型参数。类型参数只控制返回类型,如果我不小心错过了一个类型注释,编译器会推断出obj 如果调用函数而不给它显式的类型参数,我怎么能使它成为编译时错误呢?未选中。defaultof函数的工作方式如下: > Unchecked.defaultof;; Unchecked.defaultof;; ^^^^^^^^^^^^^^^^^^^ stdin(1,1): error FS0685: The generic function 'def

我有一个泛型函数,它很容易让编译器推断出错误的类型参数。类型参数只控制返回类型,如果我不小心错过了一个类型注释,编译器会推断出
obj

如果调用函数而不给它显式的类型参数,我怎么能使它成为编译时错误呢?
未选中。defaultof
函数的工作方式如下:

> Unchecked.defaultof;;

  Unchecked.defaultof;;
  ^^^^^^^^^^^^^^^^^^^

stdin(1,1): error FS0685: The generic function 'defaultof' must be given explicit type argument(s)

应该有帮助函数的
defaultof
使用特殊属性。F#源代码再一次很有用。函数的实现在
prim types.fs
中,但该属性添加在接口文件
prim types.fsi
中。合并声明将是:

[<RequiresExplicitTypeArguments>] 
let inline unsafeDefault<'T> : 'T = (# "ilzero !0" type ('T) : 'T #)
[]

多亏了Tomas,让我们内联取消签名吧-我是在看prim-types.fs中的实现,而不是在看prim-types.fsi中的签名。@Tim-我也是在看
fs
文件。我花了一些时间才弄明白它实际上可以在
fsi
文件中:-)