Verse では int 型 を 整数 を格納し処理するために使用します。Verse の int は正数、負数、0 を含むことができ、小数部分はありません。サポートする整数の範囲は、-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 (両端の値を含む) です。
コード内で事前定義の int 値を int リテラル として含めることができます。int リテラルはコード内で整数です。
次のサンプルでは、整数 定数 と 変数 を int リテラルで作成する方法を示します。
# この変数は全体にわたって正しいため、変化しません。
AnswerToTheQuestion : int = 42
# この矢筒の費用はこれだけのコインであり、変化しません。
CoinsPerQuiver : int = 100
# この矢筒にはこれだけの矢が含まれており、変化しません。
ArrowsPerQuiver : int = 15
#現在、プレイヤーは 225 コインと 3 本の矢を持っています。これらは変化できる値です。
var Coins : int = 225
var Arrows : int = 3
# ゲームでは、プレイヤーが購入したものの総数がトラックされます。
# 現時点では、プレイヤーは何も購入していません。
var TotalPurchases : int = 0
int の演算
int 型でサポートするのは、他の整数との数式 演算 と比較です。
数式演算
Verse の int では、+ (加算)、- (減算)、* (乗算)、/ (除算) の 4 つの基本的な数式演算を使用できます。
整数の場合、演算子 / は 失敗する可能性 があり、結果は成功した場合に rational 型になります。
rational 型は、次の関数に対するパラメータとしてのみ使用できます。
次のコードでは、整数の除算を使用して、プレイヤーが所有するコインで購入できる矢の本数を決定します。整数の除算は if 式で使用されます。整数の除算は失敗する可能性があり、失敗コンテキスト に配置する必要があります。
if (NumberOfQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
NumberOfArrowsYouCanBuy : int = NumberOfQuiversYouCanBuy * ArrowsPerQuiver
基本数式演算 (加算、減算、乗算) 用に演算子を結合し、変数の値を更新することもできます。これらの結合演算子は数式演算の第 1 被演算子 に結果を代入したものと同じです。次のコードでは、int 演算を使用して、コインと引き換えにプレイヤーに矢を販売します。
# プレイヤーからコインを取ります。プレイヤーが十分なコインを持っているかどうかを事前にチェックしないと、
# プレイヤーが持つコインの数が負の値になる可能性があります。
set Coins -= CoinsPerQuiver
# プレイヤーに矢を与えます。
set Arrows += ArrowsPerQuiver
# これを購入と捉えます。このための変数はありません。
set TotalPurchases += 1
演算子 /= は int でサポートされていません。整数の除算の結果は、有理数型で、したがって int に代入できないからです。
符号付き整数
符号付き整数は、正、負、または 0 のいずれかの整数です。演算子 - は、- が整数の前に付いている場合 (-3 など) を負数にするために使用できます。
演算子 + は、コードの見た目を整えるのに整数の前に使用することもできますが、整数の値を変えることはありません。
# これはプレイヤーに矢を販売するための別の方法で、上記の
# 「数式演算」セクションにあるコードに似た機能です。
set Coins += -CoinsPerQuiver
set Arrows += +ArrowsPerQuiver
set TotalPurchases += +1
比較
2 つの値が等しいかどうか、およびそれらの値が異なるかどうかは、それぞれ失敗する可能性がある演算子 =、<> を使用してテストできます。
数値には順序があるので、失敗する可能性がある演算子 < を使用して、整数がもう一つの整数より小さいかどうかをテストし、演算子 > では整数がもう一つの整数より大きいかどうかをテストできます。
失敗する可能性がある演算子 <= を使用して、整数がもう一つの整数以下であるかどうかをテストし、演算子 >= では整数がもう一つの整数以上であるかどうかをテストできます。
# プレイヤーによる購入が可能かどうかをチェックします。
if (Coins >= CoinsPerQuiver):
# 購入可能です。 購入に進みます
set Coins -= CoinsPerQuiver
set Arrows += ArrowsPerQuiver
set TotalPurchases += 1
標準ライブラリ
標準ライブラリ には、整数の作成と使用に役に立ち、さらに整数でよく使われる数式構造や関数が用意されています。これらの関数の詳細については、「Verse API リファレンス」を参照してください。
整数の代替表現
Verse では、基数 10 を使用する 10 進数システムではなく、16 進 数システム (基数 16) を使用して整数を表すことができます。16 進数を表すのに、数字 0-9 と文字 A-F を使用します。たとえば、0x7F は 127 と同じで、0xFACE は 64206 と同じです。
実装の詳細
将来の更新で、int は意味論的にあらゆるサイズの整数を表すようになります。ただし、現在は、Verse の int は符号付き 64 ビット整数として実装されています。更新されるまで、int は [-2^63, … , -1, 0, 1, … , 2^63 - 1] の範囲であり、数式演算の結果を含め、int サイズの範囲に収まらない整数では、整数オーバーフロー というランタイム エラーが発生します。
整数には現在これらの制限がありますが、整数を使って現在作成した Verse コードは意味論的には、高精度の整数が導入されたときでも変わりません。
持続可能型
整数値は持続可能な値です。そのため、モジュールスコープの weak_map 変数で使用すると、ゲーム セッションの間中、その値を持続できます。Verse における持続性の詳細については、「Verse で持続データを使用する」を参照してください。