Aracılığıyla paylaş


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.

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.

İşlevi tanımlama

Kullanıcı tanımlı işlevleri tanımlamak için deyimini func kullanın.

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 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

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.