مشاركة عبر


عامل تشغيل انتشار 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
  }
}

الخطوات التالية