F# 在f中声明泛型函数
我正在尝试用F编写我的第一个泛型函数,这里似乎缺少了一些概念:F# 在f中声明泛型函数,f#,F#,我正在尝试用F编写我的第一个泛型函数,这里似乎缺少了一些概念: module Assert = let ThrowsException<'e : exn> functionUnderTest = try let result = functionUnderTest printfn "fails" with | :? 'e -> printfn "succeeds" | _ -> pri
module Assert =
let ThrowsException<'e : exn> functionUnderTest =
try
let result = functionUnderTest
printfn "fails"
with
| :? 'e -> printfn "succeeds"
| _ -> printfn "fails"
我想实现这个测试工具,所以如果有人有一个解决方案,这很好,但另外,我正在学习F,我想知道我在尝试编写这样的函数时出错的地方
最终代码:
错误显示应为'>',因为类型约束在'T:>baseType时采用'T'形式。您的代码应该是:
module Assert =
let ThrowsException<'e when 'e :> exn> functionUnderTest =
try
let result = functionUnderTest
printfn "fails"
with
| :? 'e -> printfn "succeeds"
| _ -> printfn "fails"
有关详细信息,请参阅。错误显示预期的'>',因为类型约束的形式为'T when'T:>baseType。您的代码应该是:
module Assert =
let ThrowsException<'e when 'e :> exn> functionUnderTest =
try
let result = functionUnderTest
printfn "fails"
with
| :? 'e -> printfn "succeeds"
| _ -> printfn "fails"
有关更多信息,请参阅。Brilliant!非常感谢,我一直在玩when和:>但是由于某种原因,我从来没有按这个顺序玩过。我也来看看链接。太棒了!非常感谢,我一直在玩when和:>但是由于某种原因,我从来没有按这个顺序玩过。我也会看看这个链接。
module Assert =
let ThrowsException<'e when 'e :> exn> functionUnderTest =
try
let result = functionUnderTest
printfn "fails"
with
| :? 'e -> printfn "succeeds"
| _ -> printfn "fails"