存取子運算子可用來存取數位中的子資源、物件上的屬性和元素。 您也可以使用 屬性存取子來使用某些函式。
| 操作員 | 名稱 |
|---|---|
[] |
索引存取子 |
[^index] |
反向索引存取子 |
. |
函式存取子 |
:: |
巢狀資源存取子 |
. |
屬性存取子 |
索引存取子
array[integerIndex]
object['stringIndex']
使用索引存取子從陣列取得專案,或從物件取得屬性。
針對 陣列,提供索引做為 整數。 整數會比對要擷取之專案之以零起始的位置。
對於 物件,請提供索引做為 字串。 字串會比對要擷取的物件名稱。
下列範例會取得陣列中的專案。
var arrayVar = [
'Coho'
'Contoso'
'Fabrikam'
]
output accessorResult string = arrayVar[1]
範例的輸出:
| 名稱 | 類型 | 價值觀 |
|---|---|---|
| 存取子Result | 字符串 | 'Contoso' |
下一個範例會取得 物件上的屬性。
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
範例的輸出:
| 名稱 | 類型 | 價值觀 |
|---|---|---|
| 存取子Result | 字符串 | 「開發」 |
反向索引存取子
從 Bicep CLI 0.34.x 版開始,反向索引存取子運算符 (^) 可讓您從結尾計數,從數位列擷取元素。 這個以單一為基礎的索引表示 ^1 會傳回最後一個專案、 ^2 第二個到最後一個專案等等。 索引必須是大於零的正整數,而且可以指定為常值或評估為整數的表達式。
array[^index]
如果索引超過陣列的長度,靜態索引就會發生編譯錯誤,或動態索引發生運行時錯誤。
針對常數數位,運算符會在編譯時期進行評估。 對於動態輸入,例如 參數,會在部署時間進行評估。
範例
var items = [
'apple'
'banana'
'orange'
'grape'
]
output secondToLast string = items[^2]
範例的輸出:
| 名稱 | 類型 | 價值觀 |
|---|---|---|
| secondToLast | 字符串 | 'orange' |
函式存取子
resourceName.functionName()
兩個函式 - getSecret 和 list* - 支援存取子運算符來呼叫函式。 這兩個函式是唯一支援存取子運算子的函式。
範例
下列範例會參考現有的密鑰保存庫,然後使用 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')
}
}
巢狀資源存取子
parentResource::nestedResource
巢狀資源是在另一個資源內宣告的資源。 使用巢狀資源存取子 :: ,從父資源外部存取該巢狀資源。
在父資源內,您只參考具有符號名稱的巢狀資源。 從父資源外部參考巢狀資源時,您只需要使用巢狀資源存取子。
範例
下列範例示範如何從父資源內和父資源外部參考巢狀資源。
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
屬性存取子
objectName.propertyName
使用屬性存取子來存取物件的屬性。 屬性存取子可以與任何物件搭配使用,包括對象的參數和變數。 當您在不是對象的表示式上使用屬性存取時,就會收到錯誤。
範例
下列範例顯示物件變數,以及如何存取屬性。
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
範例的輸出:
| 名稱 | 類型 | 價值觀 |
|---|---|---|
outputZ |
字符串 | 'Hello' |
outputQ |
整數 | 42 |
一般而言,您會使用 屬性存取子搭配部署在 Bicep 檔案中的資源。 下列範例會建立公用IP位址,並使用屬性存取子從已部署的資源傳回值。
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
後續步驟
- 若要執行這些範例,請使用 Azure CLI 或 Azure PowerShell 來部署 Bicep 檔案。
- 若要建立 Bicep 檔案,請參閱快速入門:使用 Visual Studio Code 建立 Bicep 檔案。
- 如需如何解決 Bicep 類型錯誤的詳細資訊,請參閱 Bicep 的 Any 函數。