Datové typy v Bicepu
Tento článek popisuje datové typy podporované v Bicep.
Podporované typy
V rámci Bicep můžete použít tyto datové typy:
- array
- bool
- int
- object
- secureObject – označeno modifikátorem v Bicep
- secureString – indikované modifikátorem v Bicep
- řetězec
Pole
Pole začínají levou hranatou závorkou ( [ ) a končí pravou závorkou ( ] ). V Bicep musí být pole deklarováno na více řádcích. Nepoužívejte čárky mezi hodnotami.
V poli je každá položka reprezentována libovolným typem. Můžete mít pole, ve kterém je každá položka stejný datový typ, nebo pole, které obsahuje různé datové typy.
Následující příklad ukazuje pole celých čísel a různé typy polí.
var integerArray = [
1
2
3
]
var mixedArray = [
resourceGroup().name
1
true
'example string'
]
Pole v Bicep jsou založená na nule. V následujícím příkladu se výraz exampleArray[0] vyhodnotí jako 1 a exampleArray[2] vyhodnotí jako 3. Index samotného indexeru může být dalším výrazem. Výraz se exampleArray[index] vyhodnotí jako 2. Celočíselné indexery jsou povolené pouze u výrazů typů polí.
var index = 1
var exampleArray = [
1
2
3
]
Logické hodnoty
Při zadávání logických hodnot použijte true nebo false . Hodnotu nezadáte do uvozovek.
param exampleBool bool = true
Celá čísla
Při zadávání celočíselných hodnot nepoužívejte uvozovky.
param exampleInt int = 1
V Bicep jsou celá čísla 64bitová celá čísla. Když se předá jako vložené parametry, rozsah hodnot může být omezen sadou SDK nebo nástrojem příkazového řádku, který použijete k nasazení. Pokud například k nasazení Bicep používáte PowerShell, celého čísla mohou být v rozsahu od -2147483648 až 2147483647. Pokud se chcete tomuto omezení vyhnout, zadejte v souboru parametrů velké celočíselné hodnoty. Typy prostředků aplikují své vlastní limity pro celočíselné vlastnosti.
Formáty s plovoucí desetinnou čárkou, desítkové nebo binární formáty se v současné době nepodporují.
Objekty
Objekty začínají levou složenou závorkou ( { ) a končí pravou složenou závorkou ( } ). V Bicep musí být objekt deklarován na více řádcích. Každá vlastnost v objektu se skládá z klíče a hodnoty. Klíč a hodnota jsou oddělené dvojtečkou ( : ). Objekt umožňuje libovolnou vlastnost libovolného typu. Nepoužívejte čárky mezi vlastnostmi.
param exampleObject object = {
name: 'test name'
id: '123-abc'
isCurrent: true
tier: 1
}
V Bicep jsou u klíčů vlastností objektu volitelně povolené uvozovky:
var test = {
'my - special. key': 'value'
}
V předchozím příkladu se uvozovky používají, když klíče vlastností objektu obsahují speciální znaky. Například mezera, -nebo .. Následující příklad ukazuje použití interpolace v klíčích vlastností objektu.
var stringVar = 'example value'
var objectVar = {
'${stringVar}': 'this value'
}
Přístupové objekty vlastností se používají pro přístup k vlastnostem objektu. Jsou vytvořeny pomocí . operátoru .
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
Přístupové objekty vlastností lze použít s libovolným objektem, včetně parametrů a proměnných typů objektů a literálů objektů. Použití přístupového objektu vlastností u výrazu typu bez objektu je chyba.
Syntaxi můžete použít [] také pro přístup k vlastnosti. Následující příklad vrátí Development .
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Řetězce
V Bicep jsou řetězce označené jednoduchými uvozovkami a musí být deklarovány na jednom řádku. Všechny znaky Unicode s body kódu v rozmezí 0 až 10FFFF jsou povolené.
param exampleString string = 'test value'
Následující tabulka uvádí sadu vyhrazených znaků, které musí být uvozeny znakem zpětného lomítka ( \ ):
| Řídicí sekvence | Reprezentované hodnoty | Poznámky |
|---|---|---|
\\ |
\ |
|
\' |
' |
|
\n |
Odsou čára (LF) | |
\r |
carriage return (CR) | |
\t |
znak tabulátoru | |
\u{x} |
Bod kódu Unicode x |
x představuje šestnáctkový bod kódu v rozmezí od 0 do 10FFFF (včetně). Úvodní nuly jsou povolené. Body kódu nad FFFF se vysílá jako náhradní pár. |
\$ |
$ |
Řídicí znak použijte pouze v případě, že za ním následuje { . |
// evaluates to "what's up?"
var myVar = 'what\'s up?'
Všechny řetězce v Bicep podporují interpolaci. Pokud chcete vložit výraz, ohraničte ho a ${ } . Výrazy, na které se odkazuje, nemůže zasát více řádků.
var storageName = 'storage${uniqueString(resourceGroup().id)}
Víceřádkové řetězce
V Bicep jsou víceřádkové řetězce definovány mezi třemi znaky jednoduchých uvozovek ( ) a po něm volitelně nový řádek (počáteční sekvence) a tři znaky jednoduchých uvozovek ( – uzavírací ''' ''' sekvence). Znaky zadané mezi počáteční a uzavírací sekvencí se čtou doslovně a není nutné ani možné ukončovat ukončovací znaky.
Poznámka
Vzhledem k tomu, že analyzátor Bicep čte všechny znaky tak, jak jsou, v závislosti na konci řádků souboru Bicep lze nové řádky interpretovat jako \r\n nebo \n .
Interpolace se v současné době nepodporuje ve víceřádkovém řetězci.
Víceřádkové řetězce, které ''' obsahují , nejsou podporované.
// 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}'''
Zabezpečení řetězců a objektů
Zabezpečený řetězec používá stejný formát jako řetězec a zabezpečený objekt používá stejný formát jako objekt . Pomocí Bicep přidáte @secure() modifikátor do řetězce nebo objektu.
Když nastavíte parametr na zabezpečený řetězec nebo zabezpečený objekt, hodnota parametru se neuloží do historie nasazení a nezaprotokoluje se. Pokud ale nastavíte zabezpečenou hodnotu na vlastnost, která neočekává zabezpečenou hodnotu, tato hodnota nebude chráněna. Pokud například nastavíte zabezpečený řetězec na značku, uloží se tato hodnota jako prostý text. Pro hesla a tajné kódy používejte zabezpečené řetězce.
Následující příklad ukazuje dva zabezpečené parametry:
@secure()
param password string
@secure()
param configValues object
Přiřaditelnost datového typu
V Bicep může být hodnota jednoho typu (typ zdroje) přiřazená jinému typu (cílovému typu). Následující tabulka ukazuje, který typ zdroje (uvedený vodorovně) může nebo nemůže být přiřazen ke kterému cílovému typu (uveden svisle). V tabulce se rozumí přiřaditelné prázdné místo, které není možné přiřadit, a znamená to pouze v případě, že jsou X ? typy kompatibilní.
| Typy | any |
error |
string |
number |
int |
bool |
null |
object |
array |
pojmenovaný prostředek | pojmenovaný modul | scope |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
any |
× | × | × | × | × | × | × | × | × | × | × | |
error |
||||||||||||
string |
× | × | ||||||||||
number |
× | × | × | |||||||||
int |
× | × | ||||||||||
bool |
× | × | ||||||||||
null |
× | × | ||||||||||
object |
× | × | ||||||||||
array |
× | × | ||||||||||
resource |
× | × | ||||||||||
module |
× | × | ||||||||||
scope |
? | |||||||||||
| pojmenovaný prostředek | × | ? | ? | |||||||||
| pojmenovaný modul | × | ? | ? |
Další kroky
Další informace o struktuře a syntaxi Bicep najdete v tématu Struktura souborů Bicep.