3

ライブラリを使用してコードを記述しようとしましたInt32が、型エラーが発生しました。

let x : int = 7;
Int32.abs(x)

This has type:
  int
But somewhere wanted:
  int32

他の言語intではint32.

私の質問は次のとおりです。

  • Reason ML で利用できる整数型は何ですか?
  • それらを使用するためのガイドラインは何ですか?
  • それぞれにモジュールはありますか?(たとえば、あることに気づきましたがInt32.abs、ありません)Int.abs
4

1 に答える 1

8

使用可能なさまざまな整数データ型、それらの型、関連するモジュール、およびリテラル構文の比較を次に示します。

let int       : int       = Pervasives.abs(42);
let int32     : int32     = Int32.abs(42l);
let int64     : int64     = Int64.abs(42L);
let nativeint : nativeint = Nativeint.abs(42n);

は自動的に開かれるため、上記Pervasivesのように機能を修飾する必要はありません。

ìntはネイティブに 32 ビット プラットフォームでは 31 ビット、64 ビット プラットフォームでは 63 ビットであり、int32int64またはによって提供される正確な算術セマンティクスが必要でない限り、使用する型ですnativeintIn32Int64、およびNativeintすべてに次の (または同様の) メモが含まれています。

パフォーマンスに関する注意: int32 型の値は int 型の値よりも多くのメモリ空間を占有し、int32 の算術演算は int の算術演算よりも一般に遅くなります。int32 は、アプリケーションが正確な 32 ビット演算を必要とする場合にのみ使用してください。

それがあなたの質問に答えることを願っています。

編集: BuckleScript を使用して JavaScript にコンパイルする場合、これは Reason では非常に一般的ですが、セマンティクスはわずかに異なります。

  • int32そしてint64同じように振る舞う
  • intのように振る舞うint32
  • nativeintはほとんどの場合 のように扱わfloatれますが、より整数のようになるいくつかの例外があります。

ソース: https://bucklescript.github.io/docs/en/difference-from-native-ocaml.html#integers

于 2018-02-17T11:02:00.543 に答える