Bicep'te kullanıcı tanımlı işlevler
Bicep dosyanızda kendi işlevlerinizi oluşturabilirsiniz. Bu işlevler Bicep dosyalarınızda kullanılabilir. Kullanıcı tanımlı işlevler, Bicep dosyalarınızda otomatik olarak kullanılabilen standart Bicep işlevlerinden ayrıdır. Bicep dosyalarınızda tekrar tekrar kullanılan karmaşık ifadeleriniz olduğunda kendi işlevlerinizi oluşturun. Kullanıcı tanımlı işlevlerin kullanılması, dil sürümü 2.0 kod oluşturmayı otomatik olarak etkinleştirir.
Bu özelliği kullanmak için Bicep CLI sürüm 0.26.X veya üzeri gereklidir.
Sınırlamalar
Kullanıcı işlevi tanımlarken bazı kısıtlamalar vardır:
- İşlev değişkenlere erişemiyor.
- İşlev yalnızca işlevde tanımlanan parametreleri kullanabilir.
- İşlev, başvuru işlevini veya liste işlevlerini kullanamaz.
- İşlev parametreleri varsayılan değerlere sahip olamaz.
İşlevleri tanımlama
Kullanıcı tanımlı işlevleri tanımlamak için deyimini func
kullanın.
@<decorator>(<argument>)
func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>
Örnekler
Aşağıdaki örneklerde kullanıcı tanımlı işlevlerin nasıl tanımlanacağı ve kullanılacağı gösterilmektedir:
func buildUrl(https bool, hostname string, path string) string => '${https ? 'https' : 'http'}://${hostname}${empty(path) ? '' : '/${path}'}'
func sayHelloString(name string) string => 'Hi ${name}!'
func sayHelloObject(name string) object => {
hello: 'Hi ${name}!'
}
func nameArray(name string) array => [
name
]
func addNameArray(name string) array => [
'Mary'
'Bob'
name
]
output azureUrl string = buildUrl(true, 'microsoft.com', 'azure')
output greetingArray array = map(['Evie', 'Casper'], name => sayHelloString(name))
output greetingObject object = sayHelloObject('John')
output nameArray array = nameArray('John')
output addNameArray array = addNameArray('John')
Önceki örneklerden alınan çıkışlar şunlardır:
Adı | Tür | Değer |
---|---|---|
azureUrl | String | https://microsoft.com/azure |
greetingArray | Dizi | ["Merhaba Evie!","Merhaba Casper!"] |
greetingObject | Object | {"hello":"Merhaba John!"} |
nameArray | Dizi | ["John"] |
addNameArray | Dizi | ["Mary","Bob","John"] |
Bicep CLI sürüm 0.23.X veya üzeriyle, kullanıcı tanımlı bir işlev içinde başka bir kullanıcı tanımlı işlevi çağırma esnekliğine sahipsiniz. Yukarıdaki örnekte işlevinin sayHelloString
tanımıyla işlevi şu şekilde yeniden tanımlayabilirsiniz sayHelloObject
:
func sayHelloObject(name string) object => {
hello: sayHelloString(name)
}
Kullanıcı tanımlı işlevler, kullanıcı tanımlı veri türlerinin kullanılmasını destekler. Örneğin:
@minValue(0)
type positiveInt = int
func typedArg(input string[]) positiveInt => length(input)
param inArray array = [
'Bicep'
'ARM'
'Terraform'
]
output elements positiveInt = typedArg(inArray)
Yukarıdaki örnekten alınan çıkış:
Adı | Tür | Değer |
---|---|---|
öğeler | positiveInt | 3 |
Dekoratörleri kullanma
Dekoratörler biçiminde @expression
yazılır ve işlev bildirimlerinin üzerine yerleştirilir. Aşağıdaki tabloda işlevler için kullanılabilir dekoratörler gösterilmektedir.
Dekoratör | Bağımsız değişken | Açıklama |
---|---|---|
Açıklama | Dize | İşlev için açıklamalar sağlayın. |
export | yok | İşlevin başka bir Bicep dosyası tarafından içeri aktarılabilmesini gösterir. |
meta veriler | nesne | İşleve uygulanacak özel özellikler. Açıklama dekoratörüne eşdeğer bir açıklama özelliği içerebilir. |
Dekoratörler sys ad alanındadır. Dekoratörü aynı ada sahip başka bir öğeden ayırt etmeniz gerekiyorsa, dekoratörün önüne ile yazın sys
. Örneğin, Bicep dosyanız adlı description
bir değişken içeriyorsa, açıklama dekoratörü kullanılırken sys ad alanını eklemeniz gerekir.
Açıklama
Açıklama eklemek için işlev bildirimine bir açıklama ekleyin. Örneğin:
@description('The say hello function.')
func sayHelloString(name string) string => 'Hi ${name}!'
Açıklama metni için Markdown biçimli metin kullanılabilir.
Export
İşlevi diğer Bicep dosyalarıyla paylaşmak için kullanın @export()
. Daha fazla bilgi için bkz . Değişkenleri, türleri ve işlevleri dışarı aktarma.
Meta veri
Kullanıcı tanımlı bir işleve uygulamak istediğiniz özel özellikleriniz varsa bir meta veri dekoratörü ekleyin. Meta veriler içinde, özel adlara ve değerlere sahip bir nesne tanımlayın. Meta veriler için tanımladığınız nesne herhangi bir adın ve türün özelliklerini içerebilir.
Açıklamaya eklemek için anlamlı olmayan işlev hakkındaki bilgileri izlemek için bu dekoratörü kullanabilirsiniz.
@description('Configuration values that are applied when the application starts.')
@metadata({
source: 'database'
contact: 'Web team'
})
type settings object
Bir dekoratöre başka bir @metadata()
dekoratörle çakşan bir özellik sağladığınızda, bu dekoratör her zaman dekoratördeki @metadata()
her şeyden öncelikli olur. Bu nedenle, değerin @metadata()
içindeki çakışan özellik yedeklidir ve değiştirilecektir. Daha fazla bilgi için bkz . Çakışan meta veri yok.
Sonraki adımlar
- Bicep dosya yapısı ve söz dizimi hakkında bilgi edinmek için bkz . Bicep dosyalarının yapısını ve söz dizimini anlama.
- Kullanılabilir Bicep işlevlerinin listesi için bkz . Bicep işlevleri.