Bicep'teki veri türleri

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.

Desteklenen türler

Bicep içinde şu veri türlerini kullanabilirsiniz:

Diziler

Diziler sol köşeli ayraçla ([) başlar ve sağ köşeli ayraçla (]) biter. Bicep'te bir dizi tek satırda veya birden çok satırda bildirilebilir. Virgüller (,) tek satırlı bildirimlerdeki değerler arasında kullanılır, ancak çok satırlı bildirimlerde 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.

var multiLineArray = [
  'abc'
  'def'
  'ghi'
]

var singleLineArray = ['abc', 'def', 'ghi']

var mixedArray = ['abc', 'def'
    'ghi']

Bir dizide, her öğe herhangi bir türle temsil edilir. Her öğenin aynı veri türü olduğu bir diziniz veya farklı veri türlerini barındıran bir diziniz olabilir.

Aşağıdaki örnekte bir tamsayı dizisi ve farklı türler dizisi gösterilmektedir.

var integerArray = [
  1
  2
  3
]

var mixedArray = [
  resourceGroup().name
  1
  true
  'example string'
]

Bicep'teki diziler sıfır tabanlıdır. Aşağıdaki örnekte ifade exampleArray[0] 1 olarak değerlendirilir ve exampleArray[2] 3 olarak değerlendirilir. Dizin oluşturucunun dizini başka bir ifade olabilir. İfade exampleArray[index] 2 olarak değerlendirilir. Tamsayı dizin oluşturucularına yalnızca dizi türlerinin ifadesinde izin verilir.

var index = 1

var exampleArray = [
  1
  2
  3
]

Dizin sınırların dışında olduğunda aşağıdaki hatayı alırsınız:

The language expression property array index 'x' is out of bounds

Bu özel durumu önlemek için, aşağıdaki örnekte gösterildiği gibi Or mantıksal işlecini kullanabilirsiniz:

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

Boolean değerleri

Boole değerleri belirtirken veya falsekullanıntrue. Değeri tırnak işaretleri ile çevrelemeyin.

param exampleBool bool = true

Tam Sayılar

Tamsayı değerleri belirtirken tırnak işareti kullanmayın.

param exampleInt int = 1

Bicep'te tamsayılar 64 bit tamsayılardır. Satır içi parametreler olarak geçirildiğinde, değer aralığı dağıtım için kullandığınız SDK veya komut satırı aracıyla sınırlanabilir. Örneğin, Bicep dağıtmak için PowerShell kullanırken 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.

Kayan nokta, ondalık veya ikili biçimler şu anda desteklenmiyor.

Nesneler

Nesneler bir sol küme ayracı ({) ile başlar ve sağ küme ayracı (}) ile biter. Bicep'te bir nesne tek satırda veya birden çok satırda bildirilebilir. Bir nesnedeki her özellik anahtar ve 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şaretine 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. Örneğin boşluk, '-' veya '.'. 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şimcileri, nesne türlerinin ve nesne değişmez değerlerinin parametreleri ve değişkenleri de dahil olmak üzere herhangi bir nesneyle kullanılabilir. Nesne olmayan bir ifadede özellik erişimcisinin kullanılması 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/değer çifti içeren sıralanmamış bir koleksiyondur. 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ıralama korunabilir. Bu determinizm olmadığından, dağıtım parametreleri ve çıkışlarıyla etkileşim kuran kod yazarken nesne anahtarlarının sıralanmasıyla ilgili varsayımlarda bulunmaktan kaçının.

Bir nesnenin var olmayan özelliğine erişirken 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

Dizeler

Bicep'te dizeler tek tırnak işaretleri ile işaretlenir ve tek bir satırda bildirilmelidir. 0 ile 10FFFFarasında kod noktaları olan tüm Unicode karakterlerine izin verilir.

param exampleString string = 'test value'

Aşağıdaki tabloda ters eğik çizgi (\) karakteriyle kaçılması gereken ayrılmış karakter kümesi listeleniyor:

Çıkış Sırası Temsil edilen değer Notlar
\\ \
\' '
\n satır besleme (LF)
\r satır başı (CR)
\t sekme karakteri
\u{x} Unicode kod noktası x x, 0 ile 10FFFF (her ikisi de dahil) arasındaki onaltılık kod noktası değerini temsil eder. Baştaki sıfırlara izin verilir. FFFF'nin üzerindeki 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'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

Bicep'te çok satırlı dizeler, isteğe bağlı olarak üç tek tırnak karakteri (''') ve ardından isteğe bağlı olarak yeni satır (açma sırası) ve üç tek tırnak karakteri (''' - kapanış dizisi) arasında tanımlanır. Açma ve kapatma sırası arasında girilen karakterler ayrıntılı olarak okunur ve kaçış gerekmez veya mümkün değildir.

Dekont

Bicep ayrıştırıcısı, Bicep dosyanızın satır sonlarına bağlı olarak tüm karakterleri olduğu gibi okuduğundan, yeni satırlar veya \nolarak \r\n yorumlanabilir.

İlişkilendirme şu anda çok satırlı dizelerde desteklenmemektedir. Bu sınırlama nedeniyle, ilişkilendirme kullanmak concat yerine işlevini kullanmanız gerekebilir.

İçeren ''' çok satırlı dizeler desteklenmez.

// 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 */
'''

// evaluates to "interpolation\nis ${blocked}"
// note ${blocked} is part of the string, and is not evaluated as an expression
var myVar6 = '''interpolation
is ${blocked}'''

Dizelerin ve nesnelerin güvenliğini sağlama

Güvenli dize, dizeyle aynı biçimi, güvenli nesne ise nesneyle aynı biçimi kullanır. Bicep ile dekoratörü bir dizeye veya nesneye eklersiniz.@secure()

Bir parametreyi güvenli bir dizeye veya güvenli nesneye ayarladığınızda, parametrenin değeri dağıtım geçmişine kaydedilmez ve günlüğe kaydedilmez. Ancak, 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

Veri türü atanabilirliği

Bicep'te, bir tür (kaynak türü) değeri başka bir türe (hedef tür) atanabilir. Aşağıdaki tabloda, hangi kaynak türünün (yatay olarak listelendiği) hangi hedef türe atanabileceği veya atanabileceği (dikey olarak listelenmiştir) gösterilmektedir. Tabloda atanabilir, X boş alan atanamaz ve ? yalnızca türleri 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ı.