4

似乎 WebSharper 在整数类型之间转换(例如int32to uint64)有一些困难。我明白了:

错误:无法转换方法调用:ToUInt64(..) [Microsoft.FSharp.Core.Operators]

同样的情况也发生在int32-> uint32int16->int32和许多其他人身上(只有byte<->int32似乎在工作)。

所以,问题是:我该如何解决这个问题?我有一个整数i(这是int32因为我无法得到其他任何东西),现在我想iUint8Array. Uint8Array.Get想要一个uint64。如何将我的转换iuint64

我打算使用[<Inline>]作弊,但这也不起作用,因为即使我尝试返回或将任何整数不同形式作为参数传递,我也会收到此错误int32

4

1 回答 1

4

从您的评论看来,您走在正确的轨道上。WebSharper 目前没有实现任何二进制处理 .NET API,所以自己实现它是正确的。使用数字类型来保证编译时的完整性,同时记住它们都Number在 JavaScript 中表示也是一个好主意。如果您缺少标准库中的转换代理,您可以添加这些或使用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 中那样进行截断。

于 2013-03-26T19:59:15.283 回答