【发布时间】:2013-10-22 11:53:53
【问题描述】:
我通常会尽量让我的问题更笼统,但这次我认为示例案例使问题更加清晰。我也是 F# 的新手,所以在这个阶段试图概括太多可能是一个错误:)
我想要实现的是创建一个函数,该函数为给定类型参数返回适当的BitConverter.ToXXX 函数。这是我尝试过的:
let FromBytes<'a> : (byte[] * int -> 'a) =
match typeof<'a> with
| x when x = typeof<Int16> -> BitConverter.ToInt16
| x when x = typeof<UInt16> -> BitConverter.ToUInt16
| _ -> failwith "Unknown type"
但是,这会失败,因为编译器不理解类型保证匹配。
我确定我可以找到解决方法,但是有没有办法在不更改函数签名的情况下使其工作?
【问题讨论】:
标签: generics f# higher-order-functions