Verse, tamsayıları depolamak ve işlemek için tür olarak int kullanır. Verse’te int pozitif bir sayı, negatif bir sayı veya sıfır içerebilir ve kesirli bileşeni yoktur. Desteklenen tamsayılar -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 (dahil) arasındadır.
Önceden tanımlanmış int değerlerini, koduna int değişmez değerleri olarak dahil edebilirsin. Bir int değişmez değeri, kodundaki bir tamsayıdır.
Aşağıdaki örneklerde int değişmez değerleriyle tamsayı sabitleri ve değişkenleri nasıl oluşturacağın gösteriliyor:
# Bu değişken evrensel olarak doğru olduğu için hiçbir zaman değişmez.
AnswerToTheQuestion : int = 42
# Bir torba okun maliyeti bu kadar paradır ve değişemez:
CoinsPerQuiver : int = 100
# Bir torba okun içeriği bu kadar oktur ve değişemez:
ArrowsPerQuiver : int = 15
# Oyuncunun şu anda 225 parası ve 3 oku vardır. Bu değerler değişebilir.
var Coins : int = 225
var Arrows : int = 3
# Oyun, oyuncunun toplam satın alma sayısının kaydını tutar.
# Oyuncu şimdiye kadar hiçbir şey satın almadı.
var TotalPurchases : int = 0
Int İşlemleri
int türü matematik işlemlerini ve diğer tamsayılarla karşılaştırmaları destekler.
Matematik
Verse’te tamsayılarla dört basit matematik işlemini kullanabilirsiniz: toplama için +, çıkarma için -, çarpma için * ve bölme için /.
Tamsayılar için / işleci başarısız olabilir niteliktedir ve başarılı olursa sonuç bir rasyonel sayı türüdür.
Rasyonel sayı türü yalnızca aşağıdaki işlevlerin bir parametresi olarak kullanılabilir:
Floor(): Rasyonel sayıyı altındaki en yakın tamsayıya yuvarlar.Ceil(): Rasyonel sayıyı üstündeki en yakın tamsayıya yuvarlar.
Aşağıdaki kod, oyuncunun paralarıyla kaç tane ok satın alabileceğini belirlemek için tamsayı bölme işlemi kullanır. Tamsayı bölme işlemi bir if ifadesinde kullanılır çünkü tamsayı bölme işlemi başarısız olabilir niteliktedir ve bu nedenle bir hata bağlamında olmalıdır:
if (NumberOfQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
NumberOfArrowsYouCanBuy : int = NumberOfQuiversYouCanBuy * ArrowsPerQuiver
Ayrıca işleçleri basit matematik işlemleri (toplama, çıkarma ve çarpma) için ve bir değişkenin değerini güncellemek amacıyla birleştirebilirsin. Bu birleşik işleçler, sonucu matematik işleminin ilk işlenenine atamakla aynıdır. Aşağıdaki kod, oyuncuya okları para karşılığında satmak için int matematiğini kullanır:
# Oyuncudan para al. Bu, oyuncunun önceden yeterli parasının olup olmadığına dair
# bir kontrol yoksa oyuncunun elinde negatif para kalmasına neden olabilir.
set Coins -= CoinsPerQuiver
# Oyuncuya ok ver.
set Arrows += ArrowsPerQuiver
# Bunu bir satın alma olarak say. Bunun için bir değişkenimiz yoktur.
set TotalPurchases += 1
Tamsayı bölme işleminin sonucu bir rasyonel sayı türünde olduğundan ve bu nedenle bir int işlevine atanamayacağından /= işleci int için desteklenmez.
İşaretli Tamsayılar
İşaretli tamsayı; pozitif, negatif veya sıfır olabilen bir değerdir. - işleci tamsayıdan önce geliyorsa tamsayıyı negatif bir sayı yapmak için kullanılabilir, örneğin -3.
Ayrıca, kodunun görsel olarak uyumlu hale gelmesine yardımcı olması için bir tamsayıdan önce + işlecini de kullanabilirsin ancak bu işleç tamsayının değerini değiştirmeyecektir.
# Bu, oyuncuya ok satmanın alternatif bir yoludur. Yukarıdaki
# Matematik bölümünde bulunan kod ile işlevsel olarak aynıdır.
set Coins += -CoinsPerQuiver
set Arrows += +ArrowsPerQuiver
set TotalPurchases += +1
Karşılaştırma
İki tamsayının eşit olup olmadığını test etmek için = başarısız olabilir işlecini, eşitsizliği test etmek içinse <> başarısız olabilir işlecini kullanabilirsin.
Sayılar sıralı olduğundan bir tamsayının diğer bir tamsayıdan küçük olup olmadığını test etmek için < başarısız olabilir işlecini, bir tamsayının diğer bir tamsayıdan büyük olup olmadığını test etmek içinse > başarısız olabilir işlecini kullanabilirsin.
Bir tamsayının diğer bir tamsayıdan küçük veya ona eşit olup olmadığını test etmek için <= başarısız olabilir işlecini, bir tamsayının diğer bir tamsayıdan büyük veya ona eşit olup olmadığını test etmek içinse >= başarısız olabilir işlecini kullanabilirsin.
# Oyuncunun bu satın alma işlemi için yeterli parasının olup olmadığını kontrol et.
if (Coins >= CoinsPerQuiver):
# Yeterli parası var! Satın almaya geç.
set Coins -= CoinsPerQuiver
set Arrows += ArrowsPerQuiver
set TotalPurchases += 1
Standart Kütüphane
Standart kütüphane, tamsayıların oluşturulmasına ve kullanılmasına yardımcı olacak fonksiyonlarla yaygın matematik yapılarını ve fonksiyonlarını sağlar. Bu fonksiyonlarla ilgili daha detaylı bilgi için Verse API Referansı bölümüne bakabilirsin.
Tamsayıların Alternatif Gösterimleri
Tamsayıları göstermek için 10’luk taban kullanan ondalık sayı sistemi yerine 16’lık taban, yani onaltılık sayı sistemini de kullanabilirsin. Bu sistemde onaltılık değerler; 0-9 aralığındaki rakamlar ve A-F aralığındaki harflerle gösterilir. Örneğin, 0x7F ile 127, 0xFACE ile 64206 değerleri aynıdır.
Uygulama Ayrıntıları
Gelecekteki bir güncellemede int sözdizimsel olarak herhangi bir büyüklükteki tamsayıyı temsil edecektir ancak şu anda Verse’te bir int, işaretli bir 64 bit tamsayı olarak uygulanır. Bu güncellemeye kadar bir int [-2^63, … , -1, 0, 1, … , 2^63 - 1] aralığında olmalıdır ve int büyüklükleri bu aralığın dışında olan matematik işlemlerinin sonuçları da dahil olmak üzere tamsayılar, tamsayı taşması adı verilen bir çalışma zamanı hatası oluşturur.
Tamsayıların şu anda sahip olduğu bu kısıtlamalara rağmen bugün tamsayılarla yazdığın Verse kodu, sözdizimsel olarak tamsayıların isteğe bağlı basamak sayısına sahip olabildiği durumlarla aynı olacaktır.
Kalıcı Tür
Tamsayı değerleri kalıcıdır, yani bu değerleri hem modül kapsamına alınmış weak_map değişkenleriyle kullanabilir hem de değerlerini farklı oyun oturumları arasında devam ettirebilirsin. Verse’te kalıcılık hakkında daha ayrıntılı bilgi için Verse’te Kalıcı Veri Kullanımı bölümüne bakabilirsin.