Yapılar
Yapılar, alan ve değerlerden oluşan kullanıcı tanımlı koleksiyonlardır. Örneğin,
{
Field_01: 5,
Field_02: 3.14158,
Field_03: [1.56, 3.27],
}
Bir yapı içindeki alan değerlerine erişmek için nokta (.
) işlecini kullanın:
var MyStruct = {
Field_01: 5,
Field_02: 3.14158,
Field_03: [1.56, 3.27],
}
var AlmostPi: number = MyStruct.Field_02
İpucu
Mürekkep oluşturma, bir yapının son alanında asılı virgülleri destekler.
Yapı değişmez değerleri
Mürekkep oluşturma, bir veya daha fazla alan bildiriminin virgülle ayrılmış listesini çevreleyen küme ayraçlarıyla yapı değişmez değerlerini belirtir. Her alan tanımı, iki nokta üst üste ile ayrılmış bir ad ve değer (ifade) içerir.
{
Pi: Math.Pi,
Radius: 50,
Area: Math.Pi * (50 ** 2)
}
Yapı türleri
Yapı türleri oluşturma sırasında alan tanımlarıyla başlatılmalıdır, bu nedenle Mürekkep Oluşturma açık bir yapı türü adı sağlamaz. type
Kullanıcı tanımlı yapı türünü bildirmek için anahtar sözcüğünü ve alan tanımları kümesini kullanın.
Örneğin,
type SimState {
# Ball X,Y position
Ball_X: number<-12 .. 12>,
Ball_Y: number<-12 .. 12>,
# Ball X,Y velocity
BallVelocity_X: number<-100 .. 100>,
BallVelocity_Y: number<-100 .. 100>,
}
Ayrıca, daha esnek hale getirmek için sabitleri ve değişkenleri kullanarak alan kısıtlamaları tanımlayabilirsiniz. Örneğin:
type SimState {
# Ball X,Y position
Ball_X: number<-RadiusOfPlate .. RadiusOfPlate>,
Ball_Y: number<-RadiusOfPlate .. RadiusOfPlate>,
# Ball X,Y velocity
BallVelocity_X: number<-MaxVelocity .. MaxVelocity>,
BallVelocity_Y: number<-MaxVelocity .. MaxVelocity>,
}
Yapı türlerini genişletme
Var olan bir türe alan ekleyerek bir yapı türü tanımlamak için anahtar sözcüğünü extends
kullanın:
type ObservableState {
x: number,
y: number,
}
# Make a type with fields x,y,z
type SimState extends ObservableState {
z: number
}
Tür denkliği ve atama
Denk -lik
Yapı türü X
, şu durumda yapı türüne Y
eşdeğerdir:
- ve
Y
arasındakiX
tüm alan adları eşleşsin. - ve
Y
içindekiX
alan adları aynı sırada tanımlanır. - ile arasında
X
Y
aynı adlı alanların türü eşdeğerdir.
Denklik örnekleri
Alanlar aynı sırada tanımlanmadığından , alan adları aynı olsa bile aşağıdaki türler eşdeğer değildir:
type SimState_01 {
MathConstant: number,
Radius: number,
Area: number<0 .. (Math.Pi * (50 ** 2))>
}
type SimState_02 {
Radius: number,
MathConstant: number,
Area: number<0 .. (Math.Pi * (50 ** 2))>
}
Ortak alanlar aynı türde olmadığından , alan adları aynı olsa bile aşağıdaki türler eşdeğer değildir:
type SimState_01 {
MathConstant: number,
Radius: string,
Area: number<0 .. (Math.Pi * (50 ** 2))>
}
type SimState_02 {
MathConstant: number,
Radius: number,
Area: number<0 .. (Math.Pi * (50 ** 2))>
}
Atama
Yapı türü X
, şu durumda yapı türüne Y
dönüştürülebilir:
Y
içindeX
bulunan tüm alanları içerir.- Aynı adlı tüm alanların türleri atanabilir.
Örneğin, aşağıdaki türler göz önünde bulundurulduğunda:
type Polygon = { Sides: Number.UInt8<1 .. 8>, DisplayName: string, ShapeName: string }
type Square = { Sides: 4, DisplayName: string }
var Shape1: Polygon = { Sides:4, DisplayName:"Icon", ShapeName:"Square" }
var Shape2: Square = { Sides:4, DisplayName:"Icon"}
içindeki tüm bilgiler Shape2
içindeki alanlara Shape1
atanabileceğinden aşağıdaki ifade geçerlidir:
Shape1 = Shape2
Ancak bu ifade, 'den Shape1
içine Shape2
bilgi kopyalanırken bilgilerin (Shape1.ShapeName
) kaybolmasından kaynaklanmaz:
Shape2 = Shape1