Aracılığıyla paylaş


Bicep erişimci işleçleri

Erişimci işleçleri alt kaynaklara, nesnelerdeki özelliklere ve bir dizideki öğelere erişmek için kullanılır. Bazı işlevleri kullanmak için özellik erişimcisini de kullanabilirsiniz.

Operatör İsim
[] Dizin erişimcisi
[^index] Ters dizin erişimcisi
. İşlev erişimcisi
:: İç içe kaynak erişimcisi
. Özellik erişimcisi

Dizin erişimcisi

array[integerIndex]

object['stringIndex']

Diziden öğe veya nesneden bir özellik almak için dizin erişimcisini kullanın.

Dizi için dizini tamsayı olarak sağlayın. Tamsayı, alınacak öğenin sıfır tabanlı konumuyla eşleşir.

Bir nesne için dizini dize olarak sağlayın. Dize, alınacak nesnenin adıyla eşleşir.

Aşağıdaki örnek bir dizideki bir öğeyi alır.

var arrayVar = [
  'Coho'
  'Contoso'
  'Fabrikam'
]

output accessorResult string = arrayVar[1]

Örnekten çıktı:

İsim Türü Değer
accessorResult String 'Contoso'

Sonraki örnek bir nesne üzerinde bir özellik alır.

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

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

Örnekten çıktı:

İsim Türü Değer
accessorResult String 'Geliştirme'

Ters dizin erişimcisi

Bicep CLI sürüm 0.34.x'ten başlayarak ters dizin erişimcisi işleci (^), sonundan sayarak bir diziden öğe almanıza olanak tanır. Bu tek tabanlı dizin, son öğeyi, ^1 ikinciyi sondan bire bir vb. döndürdüğü anlamına gelir^2. Dizin sıfırdan büyük pozitif bir tamsayı olmalıdır ve değişmez değer veya tamsayı olarak değerlendirilen bir ifade olarak belirtilebilir.

array[^index]

Dizin dizinin uzunluğunu aşarsa, statik dizinler için bir derleme hatası veya dinamik dizinler için çalışma zamanı hatası oluşur.

Sabit diziler için işleç derleme zamanında değerlendirilir. Parametreler gibi dinamik girişler için değerlendirme dağıtım zamanında gerçekleşir.

Örnek

var items = [
  'apple'
  'banana'
  'orange'
  'grape'
]

output secondToLast string = items[^2]

Örnekten çıktı:

İsim Türü Değer
secondToLast String 'turuncu'

İşlev erişimcisi

resourceName.functionName()

getSecret ve list* olmak üzere iki işlev, işlevi çağırmak için erişimci işlecini destekler. Bu iki işlev, erişimci işlecini destekleyen tek işlevlerdir.

Örnek

Aşağıdaki örnek mevcut bir anahtar kasasına başvurur ve ardından bir gizli diziyi modüle geçirmek için kullanır getSecret .

resource kv 'Microsoft.KeyVault/vaults@2025-05-01' existing = {
  name: kvName
  scope: resourceGroup(subscriptionId, kvResourceGroup )
}

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    sqlServerName: sqlServerName
    adminLogin: adminLogin
    adminPassword: kv.getSecret('vmAdminPassword')
  }
}

İç içe kaynak erişimcisi

parentResource::nestedResource

İç içe yerleştirilmiş kaynak, başka bir kaynak içinde bildirilen bir kaynaktır. İç içe yerleştirilmiş kaynaklara üst kaynağın dışından erişmek için iç içe kaynak erişimcisini :: kullanın.

Üst kaynak içinde iç içe kaynağa yalnızca sembolik adla başvurursunuz. İç içe kaynak erişimcisini yalnızca üst kaynağın dışından iç içe kaynağa başvururken kullanmanız gerekir.

Örnek

Aşağıdaki örnekte, iç içe bir kaynağa üst kaynağın içinden ve üst kaynağın dışından nasıl başvuracakları gösterilmektedir.

resource demoParent 'demo.Rp/parentType@2024-01-01' = {
  name: 'demoParent'
  location: 'West US'

  // Declare a nested resource within 'demoParent'
  resource demoNested 'childType' = {
    name: 'demoNested'
    properties: {
      displayName: 'The nested instance.'
    }
  }

  // Declare another nested resource
  resource demoSibling 'childType' = {
    name: 'demoSibling'
    properties: {
      // Use symbolic name to reference because this line is within demoParent
      displayName: 'Sibling of ${demoNested.properties.displayName}'
    }
  }
}

// Use nested accessor to reference because this line is outside of demoParent
output displayName string = demoParent::demoNested.properties.displayName

Özellik erişimcisi

objectName.propertyName

Bir nesnenin özelliklerine erişmek için özellik erişimcilerini kullanın. Özellik erişimcileri, nesneler olan parametreler ve değişkenler de dahil olmak üzere herhangi bir nesneyle kullanılabilir. Nesne olmayan bir ifadede özellik erişimini kullandığınızda hata alırsınız.

Örnek

Aşağıdaki örnek bir nesne değişkenini ve özelliklere nasıl erişeceklerini gösterir.

var x = {
  y: {
    z: 'Hello'
    a: true
  }
  q: 42
}

output outputZ string = x.y.z
output outputQ int = x.q

Örnekten çıktı:

İsim Türü Değer
outputZ String 'Hello'
outputQ tamsayı 42

Genellikle özellik erişimcisini Bicep dosyasında dağıtılan bir kaynakla kullanırsınız. Aşağıdaki örnek bir genel IP adresi oluşturur ve dağıtılan kaynaktan bir değer döndürmek için özellik erişimcilerini kullanır.

resource publicIp 'Microsoft.Network/publicIPAddresses@2025-01-01' = {
  name: publicIpResourceName
  location: location
  properties: {
    publicIPAllocationMethod: dynamicAllocation ? 'Dynamic' : 'Static'
    dnsSettings: {
      domainNameLabel: publicIpDnsLabel
    }
  }
}

// Use property accessor to get value
output ipFqdn string = publicIp.properties.dnsSettings.fqdn

Sonraki Adımlar