Gegevenstypen in Bicep

In dit artikel worden de gegevenstypen beschreven die worden ondersteund in Bicep.

Ondersteunde typen

Binnen bicep kunt u de volgende gegevenstypen gebruiken:

  • matrix
  • booleaans
  • int
  • object
  • secureObject - aangeduid met modifier in Bicep
  • secureString - aangeduid met modifier in Bicep
  • tekenreeks

Matrices

Matrices beginnen met een linkerhake ( [ ) en eindigen met een rechterhake ( ] ). In Bicep moet een matrix in meerdere regels worden gedeclareerd. Gebruik geen komma's tussen waarden.

In een matrix wordt elk item vertegenwoordigd door het type. U kunt een matrix hebben waarin elk item hetzelfde gegevenstype is of een matrix die verschillende gegevenstypen bevat.

In het volgende voorbeeld ziet u een matrix met gehele getallen en een matrix van verschillende typen.

var integerArray = [
  1
  2
  3
]

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

Matrices in Bicep zijn op nul gebaseerd. In het volgende voorbeeld wordt de expressie exampleArray[0] geëvalueerd als 1 exampleArray[2] en geëvalueerd als 3. De index van de indexer kan zelf een andere expressie zijn. De expressie exampleArray[index] wordt geëvalueerd als 2. Indexeren van gehele getallen zijn alleen toegestaan voor expressies van matrixtypen.

var index = 1

var exampleArray = [
  1
  2
  3
]

Booleaans

Gebruik of bij het opgeven van true booleaanse false waarden. Laat de waarde niet tussen aanhalingstekens staan.

param exampleBool bool = true

Gehele getallen

Gebruik geen aanhalingstekens wanneer u waarden met gehele getallen opgeeft.

param exampleInt int = 1

In Bicep zijn gehele getallen 64-bits gehele getallen. Wanneer deze worden doorgegeven als inlineparameters, kan het bereik van waarden worden beperkt door de SDK of het opdrachtregelprogramma dat u voor de implementatie gebruikt. Wanneer u bijvoorbeeld PowerShell gebruikt om een Bicep te implementeren, kunnen typen gehele getallen variëren van -2147483648 tot 2147483647. Om deze beperking te voorkomen, geeft u grote waarden voor gehele getallen op in een parameterbestand. Resourcetypen passen hun eigen limieten toe voor eigenschappen van gehele getallen.

Drijvende komma-, decimale of binaire indelingen worden momenteel niet ondersteund.

Objecten

Objecten beginnen met een linkerbrace ( { ) en eindigen met een rechterbrace ( } ). In Bicep moet een object in meerdere regels worden gedeclareerd. Elke eigenschap in een object bestaat uit sleutel en waarde. De sleutel en waarde worden gescheiden door een dubbele punt ( : ). Een object staat elke eigenschap van elk type toe. Gebruik geen komma's tussen eigenschappen.

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

In Bicep zijn aanhalingstekens optioneel toegestaan voor object-eigenschapssleutels:

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

In het voorgaande voorbeeld worden aanhalingstekens gebruikt wanneer de eigenschapssleutels van het object speciale tekens bevatten. Bijvoorbeeld ruimte, '-', of '.'. In het volgende voorbeeld ziet u hoe u interpolatie gebruikt in object-eigenschapssleutels.

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

Eigenschapsaccessoires worden gebruikt om toegang te krijgen tot eigenschappen van een object. Ze worden samengesteld met behulp van de . operator .

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

Accessoires voor eigenschappen kunnen worden gebruikt met elk object, met inbegrip van parameters en variabelen van objecttypen en letterlijke waarden van objecten. Het gebruik van een eigenschapsaccess in een expressie van het type niet-object is een fout.

U kunt ook de [] syntaxis gebruiken om toegang te krijgen tot een eigenschap. Het volgende voorbeeld retourneert Development .

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

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

Tekenreeksen

In Bicep worden tekenreeksen gemarkeerd met enkele aanhalingstekens en moeten ze op één regel worden gedeclareerd. Alle Unicode-tekens met codepunten tussen 0 en 10FFFF zijn toegestaan.

param exampleString string = 'test value'

De volgende tabel bevat de set gereserveerde tekens die moeten worden escapen door een backslash ( \ ) teken:

Escapereeks Vertegenwoordigde waarde Notities
\\ \
\' '
\n regelfeed (LF)
\r carriage return (CR)
\t tab-teken
\u{x} Unicode-codepunt x x vertegenwoordigt een hexadecimale codepuntwaarde tussen 0 en 10FFFF (beide inclusief). Voor nullen vooraan zijn toegestaan. Codepunten boven FFFF worden als een surrogaatpaar uitgezonden.
\$ $ Alleen escape wanneer gevolgd door { .
// evaluates to "what's up?"
var myVar = 'what\'s up?'

Alle tekenreeksen in Bicep ondersteunen interpolatie. Als u een expressie wilt injecteren, omringt u deze ${ door en } . Expressies waarnaar wordt verwezen, kunnen niet meerdere regels omspannen.

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

Tekenreeksen met meerdere lijnen

In Bicep worden tekenreeksen met meerdere lijnen gedefinieerd tussen drie enkele aangavetekens ( ), gevolgd door een nieuwe regel (de openingsreeks) en drie enkele aangavetekens ( - de afsluitende ''' ''' reeks). Tekens die worden ingevoerd tussen de reeks openen en sluiten worden verbatim gelezen en er is geen escape-teken nodig of mogelijk.

Notitie

Omdat de Bicep-parser alle tekens leest zoals deze is, kunnen nieuwe regeleinden worden geïnterpreteerd als of , afhankelijk van de regeleinden van uw \r\n Bicep-bestand. \n Interpolatie wordt momenteel niet ondersteund in tekenreeksen met meerdere lijnen. Meerdere regelreeksen met ''' worden niet ondersteund.

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

Tekenreeksen en objecten beveiligen

Beveiligde tekenreeks gebruikt dezelfde indeling als tekenreeks en beveiligd object gebruikt dezelfde indeling als object. Met Bicep voegt u de @secure() modifier toe aan een tekenreeks of object.

Wanneer u een parameter in stelt op een beveiligde tekenreeks of beveiligd object, wordt de waarde van de parameter niet opgeslagen in de implementatiegeschiedenis en wordt deze niet geregistreerd. Als u die beveiligde waarde echter in stelt op een eigenschap die geen veilige waarde verwacht, wordt de waarde niet beveiligd. Als u bijvoorbeeld een beveiligde tekenreeks in stelt op een tag, wordt die waarde opgeslagen als tekst zonder tekst zonder tekst. Gebruik beveiligde tekenreeksen voor wachtwoorden en geheimen.

In het volgende voorbeeld ziet u twee beveiligde parameters:

@secure()
param password string

@secure()
param configValues object

Toewijsbaarheid van gegevenstype

In Bicep kan een waarde van het ene type (brontype) worden toegewezen aan een ander type (doeltype). In de volgende tabel ziet u welk brontype (horizontaal vermeld) wel of niet kan worden toegewezen aan welk doeltype (verticaal vermeld). In de tabel betekent toewijzen, lege ruimte betekent niet toewijsbaar en betekent dit alleen X als deze typen compatibel ? zijn.

Typen any error string number int bool null object array benoemde resource benoemde module 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 ?
benoemde resource X ? ?
benoemde module X ? ?

Volgende stappen

Zie Bicep-bestandsstructuur voor meer informatie over de structuur en syntaxis van Bicep.