似乎WebSharper在整数类型之间转换有困难(比如,int32
到uint64
)。我明白了:
错误:无法转换方法调用:ToUInt64(..)[Microsoft.FSharp.Core.Operators]
同样发生在int32
- > uint32
,int16
- > int32
和其他许多人(只有byte
< - > int32
似乎正在运作。
所以,问题是:我该如何解决这个问题?我有一个整数i
(int32
,因为我无法得到任何其他内容)现在我想从i
得到Uint8Array
- 元素。 Uint8Array.Get
需要uint64
。如何将i
转换为uint64
?
我打算使用[<Inline>]
作弊,但这也不起作用,因为即使我尝试返回或作为参数传递任何不同形式int32
的整数,我也会收到此错误。
答案 0 :(得分:4)
从您的评论中,您听起来就像是在正确的轨道上。 WebSharper目前没有实现任何二进制处理.NET API,所以自己实现它是正确的。使用数字类型进行编译时的完整性,同时记住它们在JavaScript中都表示为Number
也是一个好主意。如果您缺少标准库中的转换代理,您可以添加或使用Inline
定义,我相信这应该有效:
[<AutoOpen>]
module Conversions =
[<Inline "$0">]
let inline int64 x = int64 x
[<Inline "$0">]
let inline int32 x = int32 x
[<Inline "$0">]
let inline uint32 x = uint32 x
[<Inline "$0">]
let inline uint64 x = uint64 x
当然,上述实现不会对这些运算符在F#/ .NET中进行截断。