Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 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>
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 | Dize | https://microsoft.com/azure |
| selamlamaDizisi | Dizi | ["Merhaba Evie!","Merhaba Casper!"] |
| karşılamaNesnesi | Nesne | {"hello":"Merhaba John!"} |
| nameArray | Dizi | ["John"] |
| addNameArray | Dizi | ["Mary","Bob","John"] |
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 sayHelloStringtanı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 |
Bicep CLI 0.30.X sürümünden itibaren kullanıcı tanımlı işlevler aynı Bicep dosyasında tanımlanan değişkenlere erişebilir. Aşağıdaki örnekte kullanıcı tanımlı bir işlevin bir değişkene nasıl başvurabileceği gösterilmektedir:
var greetingPrefix = 'Hello'
func greet(name string) string => '${greetingPrefix}, ${name}!'
output message string = greet('Azure')
Yukarıdaki örnekten alınan çıkış:
| Adı | Tür | Değer |
|---|---|---|
| mesaj | Dize | Merhaba Azure! |
Bicep CLI sürüm 0.31.X'ten başlayarak, diğer Bicep dosyalarından içeri aktarılan değişkenlere, yerel olarak tanımlanan değişkenler gibi kullanıcı tanımlı işlevlerinizden erişilebilir.
Değişkeni dışarı aktaran adlı shared.bicep bir Bicep dosyanız olduğunu varsayalım:
// shared.bicep
@export()
var sharedPrefix = 'Contoso'
Bu değişkeni ana Bicep dosyanıza aktarabilir ve kullanıcı tanımlı bir işlevin içinde kullanabilirsiniz:
import shared from './shared.bicep'
func makeResourceName(suffix string) string => '${shared.sharedPrefix}-${suffix}'
output resourceName string = makeResourceName('storage')
Yukarıdaki örnekten alınan çıkış:
| Adı | Tür | Değer |
|---|---|---|
| kaynakAdı | Dize | Contoso depolama |
Değişkenleri içeri aktarma hakkında daha fazla bilgi için bkz. Değişkenleri, türleri ve işlevleri dışarı aktarma.
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. |
| dışa aktarım | 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ı descriptionbir 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.
İhracat
İş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.