Datatyper i Bicep

I den här artikeln beskrivs de datatyper som stöds i Bicep.

Typer som stöds

Inom en Bicep kan du använda följande datatyper:

  • matris
  • boolesk
  • int
  • objekt
  • secureObject – anges av modifieraren i Bicep
  • secureString – anges av modifieraren i Bicep
  • sträng

Matriser

Matriser börjar med en vänster hakparentes ( [ ) och slutar med en höger hakparentes ( ] ). I Bicep måste en matris deklareras i flera rader. Använd inte kommatecken mellan värden.

I en matris representeras varje objekt av valfri typ. Du kan ha en matris där varje objekt har samma datatyp eller en matris som innehåller olika datatyper.

I följande exempel visas en matris med heltal och en matris med olika typer.

var integerArray = [
  1
  2
  3
]

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

Matriser i Bicep är nollbaserade. I följande exempel utvärderas uttrycket exampleArray[0] till 1 och exampleArray[2] utvärderas till 3. Indexet för indexeraren kan vara ett annat uttryck. Uttrycket exampleArray[index] utvärderas till 2. Heltalsindexerare tillåts endast för uttryck av matristyper.

var index = 1

var exampleArray = [
  1
  2
  3
]

Booleska värden

När du anger booleska värden använder true du eller false . Omge inte värdet med citattecken.

param exampleBool bool = true

Heltal

Använd inte citattecken när du anger heltalsvärden.

param exampleInt int = 1

I Bicep är heltal 64-bitars heltal. När de skickas som infogade parametrar kan värdeintervallet begränsas av SDK eller kommandoradsverktyget som du använder för distribution. När du till exempel använder PowerShell för att distribuera en Bicep kan heltalstyperna vara allt från -2147483648 till 2147483647. Undvik den här begränsningen genom att ange stora heltalsvärden i en parameterfil. Resurstyper tillämpar sina egna gränser för heltalsegenskaper.

Flyttal, decimaler eller binära format stöds inte för närvarande.

Objekt

Objekt börjar med en vänsterparentes ( { ) och slutar med en högerparentes ( } ). I Bicep måste ett objekt deklareras i flera rader. Varje egenskap i ett objekt består av nyckel och värde. Nyckeln och värdet avgränsas med ett kolon ( : ). Ett objekt tillåter alla typer av egenskap. Använd inte kommatecken mellan egenskaper.

param exampleObject object = {
  name: 'test name'
  id: '123-abc'
  isCurrent: true
  tier: 1
}

I Bicep kan citattecken tillåtas för objektegenskapsnycklar:

var test = {
  'my - special. key': 'value'
}

I föregående exempel används citattecken när objektegenskapsnycklarna innehåller specialtecken. Till exempel blanksteg, "-" eller ".". I följande exempel visas hur du använder interpolering i objektegenskapsnycklar.

var stringVar = 'example value'
var objectVar = {
  '${stringVar}': 'this value'
}

Egenskapsåtkomst används för att komma åt egenskaper för ett objekt. De konstrueras med . operatorn .

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

Egenskapsåtkomster kan användas med alla objekt, inklusive parametrar och variabler för objekttyper och objektlitteraler. Att använda en egenskapsåtkomstor för ett uttryck av icke-objekttyp är ett fel.

Du kan också använda [] syntaxen för att komma åt en egenskap. I följande exempel returneras Development .

var environmentSettings = {
  dev: {
    name: 'Development'
  }
  prod: {
    name: 'Production'
  }
}

output accessorResult string = environmentSettings['dev'].name

Strängar

I Bicep markeras strängar med enkla citattecken och måste deklareras på en enda rad. Alla Unicode-tecken med kodpunkter mellan 0 och 10FFFF tillåts.

param exampleString string = 'test value'

I följande tabell visas en uppsättning reserverade tecken som måste hoppas över av ett omsnedstreck ( \ ) tecken:

Escape-sekvens Representerat värde Kommentarer
\\ \
\' '
\n radmatning (LF)
\r vagnretur (CR)
\t tabbtecken
\u{x} Unicode-kodpunkt x x representerar ett hexadecimalt kodpunktsvärde mellan 0 och 10FFFF (båda inkluderande). Inledande nollor tillåts. Kodpunkter över FFFF genereras som ett surrogatpar.
\$ $ Escape visas endast när det följs av { .
// evaluates to "what's up?"
var myVar = 'what\'s up?'

Alla strängar i Bicep stöder interpolering. Om du vill mata in ett uttryck omger du det ${ med och } . Uttryck som refereras kan inte sträcka sig över flera rader.

var storageName = 'storage${uniqueString(resourceGroup().id)}

Flerradssträngar

I Bicep definieras flerradssträngar mellan tre enkla citattecken ( ) följt av en ny rad (den inledande sekvensen) och tre enkla citattecken ( – den avslutande ''' ''' sekvensen). Tecken som anges mellan den inledande och avslutande sekvensen läses ordagrann, och ingen undantagstecken är nödvändig eller möjlig.

Anteckning

Eftersom Bicep-parsern läser alla tecken som de är, kan radsluten för din Bicep-fil tolkas som antingen \r\n eller \n . Interpolering stöds för närvarande inte i flerradssträngar. Flerradiga strängar som ''' innehåller stöds inte.

// 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
myVar6 = '''interpolation
is ${blocked}'''

Säkra strängar och objekt

Säker sträng använder samma format som sträng, och säkra objekt använder samma format som -objekt. Med Bicep lägger du till @secure() modifieraren i en sträng eller ett objekt.

När du anger en parameter till en säker sträng eller ett säkert objekt sparas inte värdet för parametern i distributionshistoriken och loggas inte. Men om du anger det säkra värdet till en egenskap som inte förväntar sig ett säkert värde skyddas inte värdet. Om du till exempel anger en säker sträng till en tagg lagras det värdet som oformaterad text. Använd säkra strängar för lösenord och hemligheter.

I följande exempel visas två säkra parametrar:

@secure()
param password string

@secure()
param configValues object

Tilldelningsmöjlighet för datatyp

I Bicep kan ett värde av en typ (källtyp) tilldelas till en annan typ (måltyp). I följande tabell visas vilken källtyp (visas vågrätt) som kan eller inte kan tilldelas till vilken måltyp (visas lodrätt). I tabellen innebär det X att det går att tilldela, att det tomma utrymmet inte kan tilldelas, och det innebär bara om de typerna är ? kompatibla.

Typer any error string number int bool null object array namngiven resurs namngiven modul 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 ?
namngiven resurs X ? ?
namngiven modul X ? ?

Nästa steg

Mer information om strukturen och syntaxen för Bicep finns i Bicep-filstrukturen.