Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Bicep'te desteklenen veri türleri açıklanmaktadır. Özel veri türlerini tanımlamak için bkz . Kullanıcı tanımlı veri türleri.
Herhangi biri
Bicep sürüm v0.38.3 ve üzeri ile Bicep'teki tür, any ilişkili simge için derleme zamanı türü denetimini devre dışı bırakan izin veren bir türdür. Türün any değeri, , , string, int, bool, arrayveya karmaşık ifadeler dahil olmak üzere objectherhangi bir türde veri tutabilir.
param foo any
output bar any = foo
Yukarıdaki örnekte, foo herhangi bir değer türünü kabul edebilir ve bar türünden bağımsız olarak foo aynı değeri verir.
any Bicep'in tür güvenliğini atladığından, yalnızca tam türün önceden belirlenemediği durumlarda kullanılmalıdır. Örneğin, birden çok veri şeklini işleyen bir modülden veri geçirirken veya yazılmamış JSON girişiyle çalışırken.
Kullanmak any Bicep'i daha az tahmin edilebilir hale getirir ve çalışma zamanı hatalarına yol açabilir. Mümkün olduğunda, doğrulama ve IntelliSense desteğini korumak için belirli türleri veya beklenen türlerin birleşimini tercih edin.
Açık hiçbir linter kuralı, Bicep dosyalarında türün any kullanımını tanımlamaya ve önerilmez.
Diziler
Bicep'teki bir dizi , genellikle kaynak adları, yapılandırma ayarları veya parametreler gibi ilgili öğeleri gruplandırmak için kullanılan dizeler, tamsayılar, nesneler ve hatta diğer diziler gibi sıralı bir değer koleksiyonudur. Diziler dağıtım verilerini düzenlemek, listeleri kaynaklara geçirmek ve birden çok değer üzerinde yineleme yapmak için yararlıdır.
Bicep'teki diziler sabittir. Bildirildikten sonra içerikleri değiştirilemez. Bir diziyi "değiştirmek" için , concatveya mapgibi filterişlevleri kullanarak yeni bir dizi oluşturun.
param usLocations array = [
'eastus'
'westus2'
]
param euroLocations string[] = [
'northeurope'
'westeurope'
]
param numbers int[] = [
1
2
3
]
Tek satırlı veya çok satırlı söz dizimi kullanarak Bicep'te diziler bildirebilirsiniz. Çok satırlı dizi bildirimleri için Bicep CLI sürüm 0.7.X veya üzeri gerekir.
var multiLineArray = [
'abc'
'def'
'ghi'
]
var singleLineArray = ['abc', 'def', 'ghi']
var mixedArray = ['abc', 'def'
'ghi']
Tek satırlı diziler , değerleri ayırmak için virgül (,) kullanır.
Çok satırlı diziler değerler arasında virgül kullanmaz. Tek satırlı ve çok satırlı bildirimleri gerektiği gibi karıştırabilirsiniz.
Her dizi öğesi herhangi bir türde olabilir. Her öğenin aynı veri türü olduğu bir diziniz veya farklı veri türlerini barındıran bir diziniz olabilir.
var integerArray = [
1
2
3
]
var mixedArray = [
resourceGroup().name
1
true
'example string'
]
var arrayOfObjects = [
{ name: 'dev', size: 1 }
{ name: 'prod', size: 2 }
]
Bicep'teki diziler sıfır tabanlıdır. Öğelere dizine göre erişebilirsiniz:
var exampleArray = [1, 2, 3]
output firstElement int = exampleArray[0] // 1
output thirdElement int = exampleArray[2] // 3
var index = 1
output secondElement int = exampleArray[index] // 2
Bicep CLI sürüm 0.34.x'ten başlayarak, dizi sonundaki öğelere erişmek için söz dizimini kullanabilirsinizarray[^index]; ^1 son öğeye, ^2 ikinciye son öğeye vb. başvurur.
var exampleArray = [1, 2, 3]
output lastElement int = exampleArray[^1] // 3
output secondToLastElement int = exampleArray[^2] // 2
Sınırların dışında olan bir dizine erişirseniz bir hata alırsınız:
The language expression property array index 'x' is out of bounds
Sınır dışı özel durumu önlemek için, aşağıdaki örnekte gösterildiği gibi Or mantıksal işlecini kullanın:
param emptyArray array = []
param numberArray array = [1, 2, 3]
output foo bool = empty(emptyArray) || emptyArray[0] == 'bar'
output bar bool = length(numberArray) <= 3 || numberArray[3] == 4
Diziyle ilgili işleçler
- İki diziyi karşılaştırmak için Karşılaştırma işleçlerini kullanın.
- Diziden öğe almak için Dizin erişimcisini kullanın.
- Bir dizinin öğelerine erişmek için Safe-dereference işlecini kullanın.
- Dizileri birleştirmek için Spread kullanın.
Diziyle ilgili işlevler
- Bkz. Dizi işlevleri.
- Bkz. Lambda işlevleri.
Boolean değerleri
Boole değerleri belirttiğinizde veya truekullanınfalse. Değeri tırnak işaretleri ile çevrelemeyin.
param exampleBool bool = true
Boole ile ilgili işleçler
- Boole değerlerini karşılaştırmak için Karşılaştırma işleçlerini kullanın.
- Bkz. Mantıksal işleçler.
Boole ile ilgili işlevler
Bkz. Mantıksal işlev
Tam Sayılar
Tamsayı değerlerini belirtirken tırnak işareti kullanmayın.
param exampleInt int = 1
Bicep tamsayıları 64 bit tamsayılardır. Bunlar satır içi parametre olarak geçirildiğinde, dağıtım için kullandığınız SDK veya komut satırı aracı değer aralığını sınırlayabilir. Örneğin, Bicep'i dağıtmak için PowerShell kullandığınızda, tamsayı türleri -2147483648 ile 2147483647 arasında değişebilir. Bu sınırlamayı önlemek için parametre dosyasında büyük tamsayı değerleri belirtin. Kaynak türleri, tamsayı özellikleri için kendi sınırlarını uygular.
Bicep, tamsayı olan belirli bir değere başvuran bir tamsayı değişmez değerini destekler. Aşağıdaki örnekte tamsayı 1 değişmez değeri türüdür ve foo yalnızca değer 1 atanabilir ve başka değer atanmamalıdır.
output foo 1 = 1
Bir tamsayı değişmez değeri türünü, önceki örnekte gösterildiği gibi satır içi veya deyiminde typebildirebilirsiniz.
type oneType = 1
output foo oneType = 1
output bar oneType = 2
Yukarıdaki örnekte, öğesine atama 2 işlemi bir bar hatasıyla sonuçlanır: "Türünde bir değer bekleniyor, ancak sağlanan değer türünde12. "
Aşağıdaki örnekte birleşim türüne sahip bir tamsayı değişmez değeri türü kullanılır:
output bar 1 | 2 | 3 = 3
Kayan nokta, ondalık veya ikili biçimler şu anda desteklenmiyor.
Tamsayı ile ilgili işleçler
- Bkz. Karşılaştırma işleçleri.
- Bkz. Sayısal işleçler.
Tamsayıyla ilgili işlevler
Bkz. Sayısal işlevler.
Nesneler
Nesneler bir sol küme ayracı ({) ile başlar ve sağ küme ayracı (}) ile biter. Bicep'te bir nesneyi tek bir satırda veya birden çok satırda bildirebilirsiniz. Nesnedeki her özellik bir anahtar ve bir değerden oluşur. Anahtar ve değer iki nokta (:) ile ayrılır. Nesne, herhangi bir türde herhangi bir özelliğe izin verir. Virgüller (,), tek satırlı bildirimlerin özellikleri arasında kullanılır, ancak çok satırlı bildirimler için özellikler arasında kullanılmaz. Tek satırlı ve çok satırlı bildirimleri karıştırabilir ve eşleştirebilirsiniz. Çok satırlı bildirim için Bicep CLI sürüm 0.7.X veya üzeri gerekir.
param singleLineObject object = {name: 'test name', id: '123-abc', isCurrent: true, tier: 1}
param multiLineObject object = {
name: 'test name'
id: '123-abc'
isCurrent: true
tier: 1
}
param mixedObject object = {name: 'test name', id: '123-abc', isCurrent: true
tier: 1}
Bicep'te, isteğe bağlı olarak nesne özelliği anahtarlarında tırnak işaretlerine izin verilir:
var test = {
'my - special. key': 'value'
}
Yukarıdaki örnekte, nesne özelliği anahtarları özel karakterler içerdiğinde tırnak işaretleri kullanılır. Örnek olarak boşluk, -veya verilebilir .. Aşağıdaki örnekte, nesne özelliği anahtarlarında ilişkilendirmenin nasıl kullanılacağı gösterilmektedir.
var stringVar = 'example value'
var objectVar = {
'${stringVar}': 'this value'
}
Özellik erişimcileri bir nesnenin özelliklerine erişmek için kullanılır. Bunlar işleci kullanılarak . inşa edilir.
var a = {
b: 'Dev'
c: 42
d: {
e: true
}
}
output result1 string = a.b // returns 'Dev'
output result2 int = a.c // returns 42
output result3 bool = a.d.e // returns true
Özellik erişimcilerini, nesne türlerinin ve nesne değişmez değerlerinin parametreleri ve değişkenleri de dahil olmak üzere herhangi bir nesneyle kullanabilirsiniz. Nesne olmayan bir türün ifadesinde kullanılan özellik erişimcisi bir hatadır.
Bir özelliğe erişmek için söz dizimini [] de kullanabilirsiniz. Aşağıdaki örnek döndürür Development.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
JSON'da nesne, sıfır veya daha fazla anahtar veya değer çiftinin sıralanmamış bir koleksiyonudur. Sıralama, uygulamalara bağlı olarak farklı olabilir. Örneğin, Bicep items() işlevi nesneleri alfabetik düzende sıralar. Diğer yerlerde, özgün sıralamayı koruyabilirsiniz. Bu belirsizlik nedeniyle, dağıtım parametreleri ve çıkışlarıyla etkileşim kuran kod yazarken nesne anahtarlarının sıralamasıyla ilgili varsayımlarda bulunmaktan kaçının.
Bir nesnenin var olmayan özelliğine eriştiğinde aşağıdaki hatayı alırsınız:
The language expression property 'foo' doesn't exist
Özel durumdan kaçınmak için, aşağıdaki örnekte gösterildiği gibi And mantıksal işlecini kullanabilirsiniz:
param objectToTest object = {
one: 1
two: 2
three: 3
}
output bar bool = contains(objectToTest, 'four') && objectToTest.four == 4
Nesneyle ilgili işleçler
- Nesneleri karşılaştırmak için Karşılaştırma işleçlerini kullanın.
- Bir nesneden özellik almak için Dizin erişimcisini kullanın.
- Nesne üyelerine erişmek için Safe-dereference işlecini kullanın.
- Nesneleri birleştirmek için Spread kullanın.
Nesneyle ilgili işlevler
Bkz. Nesne işlevleri.
Dizeler
Bicep'te dizeler tek tırnak işaretleri ile işaretlenir ve bunları tek bir satırda bildirmeniz gerekir. ile 0 arasında 10FFFF kod noktaları olan tüm Unicode karakterlerine izin verilir.
param exampleString string = 'test value'
Aşağıdaki tabloda, ters eğik çizgi (\) karakteri kullanarak kaçış olarak kullanmanız gereken ayrılmış karakter kümesi listeleniyor:
| Kaçış dizisi | Temsil edilen değer | Notlar |
|---|---|---|
\\ |
\ |
|
\' |
' |
|
\n |
Satır besleme (LF) | |
\r |
Satır başı (CR) | |
\t |
Sekme karakteri | |
\u{x} |
Unicode kod noktası x |
ve x (her ikisi de dahil) arasında 010FFFF onaltılık bir kod noktası değerini temsil eder. Baştaki sıfırlara izin verilir. Yukarıdaki FFFF kod noktaları vekil çift olarak yayılır. |
\$ |
$ |
Yalnızca tarafından takip {edildiğinde kaçış. |
// evaluates to "what's up?"
var myVar = 'what\'s up?'
Bicep, belirli bir dize değerine başvuran bir dize değişmez değeri türünü destekler. Aşağıdaki örnekte bir red dize değişmez değeri türüdür. Değerini red yalnızca öğesine redColoratayabilirsiniz.
output redColor 'red' = 'red'
Önceki örnekte gösterildiği gibi satır içi veya type deyiminde bir dize değişmez değeri türü bildirebilirsiniz.
type redColor = 'red'
output colorRed redColor = 'red'
output colorBlue redColor = 'blue'
Yukarıdaki örnekte, öğesine atama blue işlemi bir colorBlue hatasıyla sonuçlanır: "Türünde bir değer bekleniyor, ancak sağlanan değer türünderedblue. "
Aşağıdaki örnekte birleşim türüyle kullanılan bir dize değişmez değeri türü gösterilmektedir:
type direction = 'north' | 'south' | 'east' | 'west'
output west direction = 'west'
output northWest direction = 'northwest'
Bicep'teki tüm dizeler ilişkilendirmeyi destekler. bir ifade eklemek için ve ile çevrelenin ${}. Başvuruda olunan ifadeler birden çok satıra yayılamaz.
var storageName = 'storage${uniqueString(resourceGroup().id)}'
Çok satırlı dizeler
Çok satırlı bir dizeyi üç tek tırnak işareti (''' içine alarak) tanımlayabilirsiniz. Dize içeriği tam olarak yazıldığı gibi korunur, bu nedenle kaçış karakterleri gerekli değildir. Sınırlayıcı ''' dize içinde görünemez.
Dize, açma sınırlayıcıdan hemen sonra veya aşağıdaki satırda başlayabilir. Her iki durumda da, sonuçta elde edilen değer baştaki bir yeni satır içermez. Satır sonları, Bicep dosyasının satır sonu biçimine bağlı olarak veya \r\nolarak \n yorumlanır.
// evaluates to "hello!"
var myVar = '''hello!'''
// evaluates to "hello!" because the first newline is skipped
var myVar2 = '''
hello!'''
// evaluates to "hello!\n" because the final newline is included
var myVar3 = '''
hello!
'''
// evaluates to " this\n is\n indented\n"
var myVar4 = '''
this
is
indented
'''
// evaluates to "comments // are included\n/* because everything is read as-is */\n"
var myVar5 = '''
comments // are included
/* because everything is read as-is */
'''
Bicep CLI sürüm v0.40.2 veya üzeri ile dize ilişkilendirmesi desteklenir. Standart Bicep $ söz dizimi kullanılarak dize ilişkilendirmesini etkinleştirmek için açma sınırlayıcıdan önce isteğe bağlı ${...} bir ön ek eklenebilir. Kaçış yapmadan değişmez değer olarak eklemeniz ${...} gerekiyorsa, ön eki yineleyerek ilişkilendirmeyi $ denetleyebilirsiniz. İlişkilendirme yalnızca, önceki $ karakter sayısı ${...} açılış sınırlayıcısında kullanılan karakter sayısıyla $ eşleştiğinde gerçekleştirilir.
// evaluates to "interpolation\nis ${blocked}"
// note ${blocked} is part of the string, and is not evaluated as an expression
var myVar6 = '''interpolation
is ${blocked}'''
// evaluates to "this is a test"
var interpolated = 'a test'
var myVar7 = $'''
this is ${interpolated}'''
// evaluates to "this is a test\nthis is not ${interpolated}"
var interpolated = 'a test'
var myVar8 = $$'''
this is $${interpolated}
this is not ${interpolated}'''
Dizeyle ilgili işleçler
- Bkz. Karşılaştırma işleçleri.
Dizeyle ilgili işlevler
- Bkz . Dize işlevleri.
Birleşim türleri
Bicep'te birleşim türü, bir alt tür kümesinden oluşan birleşik bir türün oluşturulmasına olanak tanır. Tek tek alt tür atamalarından herhangi birine izin verilirse atama geçerli olur. Karakter, | koşul or kullanan tek tek alt türleri ayırır. Örneğin, söz dizimi a | b geçerli bir atamanın veya aolabileceği b anlamına gelir. Birleşim türleri Bicep'te izin verilen değer kısıtlamasına çevrilir, bu nedenle üye olarak yalnızca değişmez değerlere izin verilir. Birleşimler, herhangi bir sayıda değişmez değer türünde ifade içerebilir.
type color = 'Red' | 'Blue' | 'White'
type trueOrFalse = 'true' | 'false'
type permittedIntegers = 1 | 2 | 3
type oneOfSeveralObjects = {foo: 'bar'} | {fizz: 'buzz'} | {snap: 'crackle'}
type mixedTypeArray = ('fizz' | 42 | {an: 'object'} | null)[]
Tür birleşimleri , stringveya intgibi tek bir Azure Resource Manager türüne boolindirgenebilir olmalıdır. Aksi takdirde BCP294 hata kodunu alırsınız. Örneğin:
type foo = 'a' | 1
Birleşim türü bildiriminde (karakterler arasında | ) alt tür olarak herhangi bir ifade türünü kullanabilirsiniz. Örneğin, aşağıdaki örneklerin tümü geçerlidir:
type foo = 1 | 2
type bar = foo | 3
type baz = bar | (4 | 5) | 6
Özel etiketli birleşim veri türü
Bicep, çeşitli türlerden biri olabilecek bir değeri temsil eden özel etiketli birleşim veri türünü destekler. Özel etiketli birleşim veri türünü bildirmek için bir @discriminator() dekoratör kullanabilirsiniz.
Bu dekoratörü kullanmak için Bicep CLI sürüm 0.21.X veya üzeri gereklidir. Söz dizimi aşağıdaki gibidir:
@discriminator('<property-name>')
Ayrımcı dekoratör, tüm birleşim üyeleri arasında paylaşılan özellik adını temsil eden tek bir parametre alır. Bu özellik adı tüm üyeler için gerekli bir dize değişmez değeri olmalıdır ve büyük/küçük harfe duyarlıdır. Birleşim üyelerindeki ayrımcı özelliğin değerleri büyük/küçük harfe duyarsız bir şekilde benzersiz olmalıdır.
type FooConfig = {
type: 'foo'
value: int
}
type BarConfig = {
type: 'bar'
value: bool
}
@discriminator('type')
param ServiceConfig FooConfig | BarConfig | { type: 'baz', *: string } = { type: 'bar', value: true }
Parametre değeri, ayrımcı özellik değerine göre doğrulanır. Örneğin, yukarıdaki örnekte parametresi türündeyse serviceConfigfootürü kullanılarak FooConfig doğrulanır. Benzer şekilde, parametresi türündeyse bartürü kullanılarak BarConfig doğrulanır. Bu desen diğer türler için de geçerlidir.
Birleşim türünün bazı sınırlamaları vardır:
Birleşim türleri tek bir Azure Resource Manager türüne indirgenebilir olmalıdır. Aşağıdaki tanım geçersiz:
type foo = 'a' | 1Yalnızca değişmez değerlere üye olarak izin verilir.
Tüm değişmez değerler aynı ilkel veri türünde olmalıdır (örneğin, tüm dizeler veya tüm tamsayılar).
Birleşim türü söz dizimini kullanıcı tanımlı veri türlerinde kullanabilirsiniz.
Boş değer atanabilir tipler
Tür adına bir ? ekleyerek herhangi bir ilkel veya karmaşık türü null atanabilir hale getirebilirsiniz. Bu, parametrenin, değişkenin veya çıkışın null değerini geçerli bir değer olarak kabul etmesini sağlar. Örneğin:
output description string? = null
output config object? = null
output optionalValue int? = null
Dizelerin ve nesnelerin güvenliğini sağlama
Güvenli dizeler dizeyle aynı biçimi, güvenli nesneler ise nesneyle aynı biçimi kullanır. Bicep ile dekoratörü bir dizeye veya nesneye eklersiniz.@secure()
Bir parametreyi (veya çıkışı) güvenli bir dizeye veya güvenli nesneye ayarladığınızda, parametrenin (veya çıktının) değeri dağıtım geçmişine kaydedilmez veya günlüğe kaydedilmez. Ancak, dağıtım sırasında bayrağı kullanılırken --debug güvenli değerler düz metinde günlüğe kaydedilir. Bu güvenli değeri güvenli değer beklemediğiniz bir özelliğe ayarlarsanız, değer korunmaz. Örneğin, bir etikete güvenli bir dize ayarlarsanız, bu değer düz metin olarak depolanır. Parolalar ve gizli diziler için güvenli dizeler kullanın.
Aşağıdaki örnekte iki güvenli parametre gösterilmektedir:
@secure()
param password string
@secure()
param configValues object
Daha fazla bilgi için bkz . Güvenli parametreler ve Güvenli çıkışlar.
Veri türü atanabilirliği
Bicep'te, bir tür (kaynak türü) değerini başka bir türe (hedef tür) atayabilirsiniz. Aşağıdaki tabloda, hangi kaynak türüne (yatay olarak listelenmiştir) hangi hedef türe atayabileceğiniz veya atayabileceğiniz (dikey olarak listelenmiştir) gösterilmektedir. Tabloda X atanabilir, boş alan atanamaz, ? ise yalnızca türler uyumluysa anlamına gelir.
| Türler | any |
error |
string |
number |
int |
bool |
null |
object |
array |
Adlandırılmış kaynak | Adlandırılmış modül | scope |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
any |
X | X | X | X | X | X | X | X | X | X | X | |
error |
||||||||||||
string |
X | X | ||||||||||
number |
X | X | X | |||||||||
int |
X | X | ||||||||||
bool |
X | X | ||||||||||
null |
X | X | ||||||||||
object |
X | X | ||||||||||
array |
X | X | ||||||||||
resource |
X | X | ||||||||||
module |
X | X | ||||||||||
scope |
? | |||||||||||
| Adlandırılmış kaynak | X | ? | ? | |||||||||
| Adlandırılmış modül | X | ? | ? |
Sonraki adımlar
Bicep'in yapısı ve söz dizimi hakkında bilgi edinmek için bkz . Bicep dosya yapısı ve söz dizimi.