4

WebSharperは、整数型間(たとえば、 )int32への変換にいくつかの問題があるようですuint64。私はこれを手に入れます:

エラー:メソッド呼び出しの変換に失敗しました:ToUInt64(..)[Microsoft.FSharp.Core.Operators]

同じことがint32-> uint32int16->int32および他の多くの場合にも起こります(byte<->のみint32が機能しているようです)。

したがって、問題は、この問題を回避するにはどうすればよいかということです。私は整数を持っていますi(これはint32他に何も取得できないためです)。そして今、iから-番目の要素を取得したいと思いUint8Arrayます。Uint8Array.Getが欲しいuint64iに変換するにはどうすればよいuint64ですか?

チートを使用するつもりでし[<Inline>]たが、それも機能しません。これは、整数の異なる形式を返すか、引数として渡そうとしても、このエラーが発生するためint32です。

4

1 に答える 1

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で実行している切り捨てを実行しません。

于 2013-03-26T19:59:15.283 に答える