Sayılar

Bir number tür, tek duyarlıklı (32 bit) kayan nokta gösterimiyle uyumlu herhangi bir değeri ifade eder. Sınırlandırlanmamış türler number , Inkling derleyicisi ve eğitim altyapısı tarafından sınırlandırlanmamış sıralar (sıralanmış değerler) olarak Bonsai kabul edilir.

Önemli

Sayı türleri izin verilen değer aralığını sınırlasa da , tüm sayılar öğrenme ve tahmin için 32 bit'e dönüştürülür. Sonuç olarak, simülatörden geçirilen 64 bit değerler örtülü olarak 32 bit'e indirildi.

Sayı değişmez değerleri

Sayı değişmezleri şu şekilde ifade olabilir:

  • integers: isteğe bağlı bir işaret içerir ve ondalık ayırıcısı yoktur.
  • floats: ondalık ayırıcı ve isteğe bağlı üsler içerir.

Örnek:

# Integers
+99
-45
9999

# Floats
12.0
0.5
13.0f7
0.3f+2

Aralık ve numaralama kısıtlamaları

Mürekkepleme, değerleri bir aralık veya numaralandı kümesiyle sınırlamak üzere türlerin kısıtlamalarını tanımlamak için açılı ayraçları (<>) number destekler.

Aralıklı kısıtlamalar, geçerli sıra (sıralı) değerler kümesi tanımlar.

Mürekkepleme, en düşük ve en yüksek değere ek olarak isteğe bağlı bir değere sahip aralıklı kısıtlamaları step tanımlar. değeri step , sağlanan minimum ve maksimum değerler arasında geçerli değerlerin nasıl hesaplanacaklarını gösterir. Aralığınız sağlanan adım değerine eşit olarak bölünene kadar aralıkta son sayı atlanır.

number<1 .. 10> # represents all numbers between 1 and 10 (inclusive)
number<0 .. 8 step 4> # represents the set {0, 4, 8}
number<0 .. 8 step 3> # represents the set {0, 3, 6}

Aralığı kısıtlanmış türe sahip bir değişkeni aralığın dışındaki bir değere ayar her zaman atanan değer en yakın geçerli değere yuvarlanmış olur. Örnek:

var x:number<1..3> = 5  # x gets value 3 

Adlandırılmış numaralar

Simgesel tanımlayıcılara (adlandırılmış numaralar) sahip numaralandı türler, nominal değerler koleksiyonu olarak kabul edilir. Adlandırılmış bir numaralama, sıralanmamış sayısal değerler kümesi olarak düşünebilirsiniz.

Numaralandı değerlerine tür adı, nokta işleci (.) ve tanımlayıcı kullanılarak sabit olarak erişilebilir. Örnek:

type Direction number<Left = 0, Straight = 1, Right = 2>

const StartingDirection = Direction.Left

Kavramlarda nominal değerleri kullanma hakkında daha fazla bilgi için bkz. Giriş ve çıkış doğrulaması ve yorumlama.

Tür denkliği ve tür ataması

Denk -lik

Türü number , , X, varsayılan kısıtlamalarla numberY eş değerse türe eşdeğerdir.

Denklik örnekleri

Aşağıdaki türler eşdeğer03 değildir çünkü ilki ile (dahil) arasında herhangi bir değere izin veren bir aralık kısıtlaması kullanır ve ikincisi yalnızca veya değerlerine izin veren bir numaralandırmış kısıtlama 0 kullanır:3

type ZeroToThree number<0 .. 3>
type ZeroOrThree number<0, 3, >

Aralıklar aynı değildir , çünkü her ikisi de aralık kısıtlamalarını kullansalar da aşağıdaki türler eşdeğer değildir:

type TrackLength number<0 .. 100>
type CartLength number<5 .. 100>

Atama

Bir sayı türü, X, YX öngörülen aralığına eşitse sayı türüne veya öngörülen aralığın alt kümesine atılabilir Y.

Örneğin, aşağıdaki türlerde:

type MaxWallHeight number<0 .. 12>
type MaxHouseHeight number<0 .. 32>

var InteriorWall: MaxWallHeight = 6.5
var ExteriorWall: MaxHouseHeight = 14

Aşağıdaki ifade geçerli olur çünkü atanan tür InteriorWall için geçerli değerler kümesine sığacak tüm olası değerlerin kümesi:ExteriorWall

ExteriorWall = InteriorWall

Aşağıdaki ifade geçerlidir, ancak içinde değeri atanan ExteriorWall tür için kabul edilebilir değer aralığını aşarsa yuvarlama meydana gelebilir, çünkü bir uyarı üretir InteriorWall:

InteriorWall = ExteriorWall

Ad Number alanı

Yerel türe ek olarak number , MürekkepLeme kısıtlanmış sayı Number türleri için kullanışlı bir kısa dil sağlayan bir ad alanı içerir. Ancak, tüm sayılar tek duyarlıklı kayan noktadır, bu nedenle tamsayılar için yalnızca 24 bit duyarlık vardır. Sonuç olarak, en yakın 32 bit kayan 16777216 mutlak değerine sahip tamsayılar yuvarlanır.

Steno Açıklama Tür
Number.UInt8 8 bit imzasız tamsayı number<0 .. 255 step 1>
Number.UInt16 16 bit imzasız tamsayı number<0 .. 65535 step 1>
Number.UInt32 32 bit imzasız tamsayı number<0 .. 4294967295 step 1>
Number.Int8 8 bit imzalı tamsayı number<-128 .. 127 step 1>
Number.Int16 16 bit imzalı tamsayı number<-32768 .. 32767 step 1>
Number.Int32 32 bit imzalı tamsayı number<-2147483648 .. 2147483647 step 1>
Number.Float32 32 bit imzalı float number
Number.Bool boolean number<False = 0, True = 1>

Önemli

Number.Bool , yerel bir tür değil adlandırılmış bir numaralamadır. Sonuç olarak, eylem türleri sürekli veya sıra türleriyle Number.Bool birlikte kullanan alanları birleştiramaz. Number.Boolyerine, bir number<0,1,> boolean'ı sıra türü olarak temsil etmek için kullanın.

Kullanım

Ad alanını kullanmak Number için Inkling using dosyanıza bir deyimi ekleyin.

inkling "2.0"

using Number