Fungsi yang ditentukan pengguna di Bicep

Dalam file Bicep, Anda dapat membuat fungsi Anda sendiri. Fungsi-fungsi ini tersedia untuk digunakan dalam file Bicep Anda. Fungsi yang ditentukan pengguna terpisah dari fungsi Bicep standar yang secara otomatis tersedia dalam file Bicep Anda. Buat fungsi Anda sendiri saat Anda memiliki ekspresi rumit yang digunakan berulang kali dalam file Bicep Anda.

Bicep CLI versi 0.26.X atau yang lebih tinggi diperlukan untuk menggunakan fitur ini.

Batasan

Saat mendefinisikan fungsi pengguna, ada beberapa batasan:

  • Fungsi tidak dapat mengakses variabel.
  • Fungsi tersebut hanya dapat menggunakan parameter yang ditentukan dalam fungsi.
  • Fungsi ini tidak dapat menggunakan fungsi referensi atau fungsi daftar apapun.
  • Parameter untuk fungsi tidak dapat memiliki nilai default.

Menentukan fungsi

func Gunakan pernyataan untuk menentukan fungsi yang ditentukan pengguna.

func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>

Contoh

Contoh berikut menunjukkan cara menentukan dan menggunakan fungsi yang ditentukan pengguna:

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

Output dari contoh sebelumnya adalah:

Nama Jenis Nilai
azureUrl String https://microsoft.com/azure
greetingArray Array ["Hai Evie!","Hai Casper!"]
greetingObject Objek {"hello":"Hai John!"}
nameArray Array ["Yohanes"]
addNameArray Array ["Mary","Bob","John"]

Dengan Bicep CLI versi 0.23.X atau lebih tinggi, Anda memiliki fleksibilitas untuk memanggil fungsi lain yang ditentukan pengguna dalam fungsi yang ditentukan pengguna. Dalam contoh sebelumnya, dengan definisi sayHelloStringfungsi , Anda dapat menentukan sayHelloObject ulang fungsi sebagai:

func sayHelloObject(name string) object => {
  hello: sayHelloString(name)
}

Dukungan fungsi yang ditentukan pengguna menggunakan jenis data yang ditentukan pengguna. Contohnya:

@minValue(0)
type positiveInt = int

func typedArg(input string[]) positiveInt => length(input)

param inArray array = [
  'Bicep'
  'ARM'
  'Terraform'
]

output elements positiveInt = typedArg(inArray)

Output dari contoh sebelumnya adalah:

Nama Jenis Nilai
elemen positiveInt 3

Langkah berikutnya