عامل تشغيل انتشار Bicep
يتم استخدام عامل تشغيل الانتشار لتوسيع صفيف أو عنصر قابل للتكبير في عناصر فردية. يسمح لك عامل تشغيل الانتشار بمعالجة الصفائف أو الكائنات بسهولة عن طريق نشر عناصرها أو خصائصها في صفائف أو كائنات جديدة.
انتشار
...
يتم استخدام عامل تشغيل الانتشار لنسخ الخصائص من كائن إلى آخر أو لدمج الصفائف والعناصر بطريقة موجزة وقابلة للقراءة.
الأمثلة
يوضح المثال التالي عامل تشغيل الانتشار المستخدم في كائن:
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
الإخراج من المثال:
Name | نوع | القيمة |
---|---|---|
objB |
كائن | { شكل: 'دائرة'، لون: 'أبيض' } |
يوضح المثال التالي عامل تشغيل الانتشار المستخدم في صفيف:
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
الإخراج من المثال:
Name | نوع | القيمة |
---|---|---|
arrB |
صفيف | [ 1, 2, 3, 4 ] |
يوضح المثال التالي الانتشار المستخدم عدة مرات في عملية واحدة:
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
الإخراج من المثال:
Name | نوع | القيمة |
---|---|---|
arrC |
صفيف | [ 1, 2, 3, 4, 2, 3 ] |
يوضح المثال التالي الانتشار المستخدم في عملية متعددة الأسطر:
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
في هذا الاستخدام، لا يتم استخدام الفاصلة بين الخطين. الإخراج من المثال:
Name | نوع | القيمة |
---|---|---|
objCombined |
كائن | { color: 'white', shape: 'circle' } |
يوضح المثال التالي كيفية إضافة عنصر صفيف بشكل مشروط:
@allowed(['white', 'black'])
param color string = 'black'
var colorWhite = { color: 'white' }
var colorBlack = { color: 'black' }
output objB object = ((color == 'white')? { shape: 'circle', ...colorWhite} : { shape: 'circle', ...colorBlack})
الإخراج من المثال:
Name | نوع | القيمة |
---|---|---|
objB |
كائن | { شكل: 'دائرة'، لون: 'أسود' } |
يمكن استخدام عملية الانتشار لتجنب تعيين خاصية اختيارية. في المثال التالي، يتم تعيين accessTier فقط إذا لم يكن مستوى المعلمة سلسلة فارغة.
param location string = resourceGroup().location
param tier string = 'Hot'
var storageAccountName = uniqueString(resourceGroup().id)
var accessTier = tier != '' ? {accessTier: tier} : {}
resource mystorage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
...accessTier
}
}
يمكن أيضا كتابة المثال السابق على النحو التالي:
param location string = resourceGroup().location
param tier string = 'Hot'
var storageAccountName = uniqueString(resourceGroup().id)
resource mystorage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
...(tier != '' ? {accessTier: tier} : {})
}
}
يمكن استخدام عامل تشغيل الانتشار لتجاوز الخصائص الموجودة.
param location string = resourceGroup().location
param storageProperties {
accessTier: string?
}
resource mystorage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: uniqueString(resourceGroup().id)
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Cold'
...storageProperties
}
}
الخطوات التالية
- لتشغيل الأمثلة، استخدم Azure CLI أو Azure PowerShell لنشر ملف Bicep.
- لإنشاء ملف Bicep، راجع التشغيل السريع: إنشاء ملف Bicep باستخدام Visual Studio Code.
- للحصول على معلومات حول كيفية حل أخطاء نوع Bicep، راجع أي دالة لـ Bicep.