Saya menggunakan fungsi yang memiliki sakelar opsional, namun dalam satu lingkaran, sakelar dan nilai terkait mungkin diperlukan atau tidak, tergantung pada mekanisme pagination.

# basic function call
myFunction $someParam 

# function call with pagination switch
myFunction $someParam -NextPageToken $theToken

Idealnya ini harus digunakan dengan cara yang lebih elegan dalam satu lingkaran:

$theToken = ""
do{
   $result = myFunction $someParam -NextPageToken $theToken # pagination switch should not be used on first call
   $theToken = $result.next_page_token
}while($theToken -ne "")

Tetapi fungsi akan menimbulkan kesalahan jika sakelar digunakan tanpa nilai ....

Apakah Powershell mendukung penambahan sakelar & nilai secara dinamis/kondisional hanya jika diperlukan, sehingga panggilan fungsi hanya digunakan sekali dalam kode?

0
Riccardo 20 Mei 2020, 12:54

1 menjawab

Jawaban Terbaik

Gunakan hashtable untuk memercikkan token:

$params = @{}
do{
   $result = myFunction $someParam @params
   $params = @{ NextPageToken = $result.next_page_token }
}while("" -ne $params['NextPageToken'])

Pada iterasi pertama, tabel splatting akan kosong (yaitu tidak ada parameter NextPageToken yang akan dilewatkan), tetapi proses selanjutnya akan dilakukan.

Lihat about_Splatting file bantuan< /a> untuk mempelajari lebih lanjut tentang penggunaan splatting untuk argumen parameter kondisional

2
Mathias R. Jessen 20 Mei 2020, 12:10