我是 powershell 新手,我正在嘗試了解此腳本的輸出。
有人可以提供輸出的解釋嗎?
$a = 4 ;
$b = 3 ;
function fun ($a = 3 , $b = 4)
{
$c = $a $b / $b $a;
echo "$c";
}
echo $a;
echo $b;
echo $c;
fun($a,$b);
uj5u.com熱心網友回復:
讓我們更改腳本以使其更慣用和更清晰(在末尾列出更改):
function Test($paramA = 30, $paramB = 40)
{
$testC = $paramA ($paramB / $paramB) $paramA
"$testC"
}
$outerA = 4
$outerB = 3
$outerA
$outerB
$outerC
Test @($outerA, $outerB)
會發生什么:
- 該函式在頂部定義。
$outerA并$outerB賦值。$outerA并被$outerB命名并列印它們的值,每行一次。4和3。$outerC被命名,它之前沒有被使用過并且沒有任何值(這不是 PowerShell 中的錯誤),沒有列印任何內容。- 該函式
Test在沒有命名引數和第一個位置的陣列的情況下被呼叫。 - 陣列系結到
$paramA。 - 沒有任何東西系結到 $paramB,因此它從函式 header 中獲取默認值
$paramB = 40。 $testC = $paramA ($paramB / $paramB) $paramA變成$testC = @(4,3) (40/40) @(4,3).- 中間位決議為 1,這使得
(@(4,3) 1) @(4, 3)which 添加東西到第一個陣列的末尾并生成一個 array@(4, 3, 1, 4, 3)。 "$testC"是一個字串,使用雙引號,這意味著您可以將變數放入其中并將它們轉換為文本。- 將陣列放入字串中會自動將其中的值與空格連接起來,因此
@(4, 3, 1, 4, 3)變成文本"4 3 1 4 3" - 在函式中單獨放置一個值使其成為函式回傳值的一部分,因此該字串來自
Test @($outerA, $outerB). - 沒有任何東西可以捕獲回傳值,它也會列印在螢屏上。
代碼輸出:
4 # from outerA
3 # from outerB
4 3 1 4 3 # from outerA outerB (paramB/paramB) outerA outerB
30 不在輸出中,因為給 paramA 一個值,所以不使用默認值。40 不在輸出中,因為 40/40 == 1。
變化:
- 洗掉
;因為僅當您想將許多東西放在同一行時才需要它。 - 重命名變數以分隔函式內部和外部的變數。
- 重命名函式,使其名稱不屬于“函式”一詞。
- 更改值以使內部/外部函式值更加明顯。
- 放置
()計算以使優先順序更清晰,除法發生在相加之前。 - 把 optional
@放在前面,($outerA,$outerB)這樣更清楚這是一個陣列,而不是函式引數。 - Remove
echo,它是一個別名,Write-Output如果你只寫變數名,它是變數的默認值。 - 重新排序,函式定義沒有理由位于代碼中間。
uj5u.com熱心網友回復:
因此腳本將 $a 初始化為 4,將 $b 初始化為 3。\
$a = 4 ;
$b = 3 ;
該函式需要默認設定為 4 和 3 的 $a 和 $b 引數。然后它計算$c = $a $b / $b $a然后列印結果。
function fun ($a = 3 , $b = 4) {
$c = $a $b / $b $a;
echo "$c";
}
腳本列印 $a 然后 $b 然后 $c。
echo $a;
echo $b;
echo $c;
然后fun呼叫該函式。
fun ($a, $b);
輸出:
4
3
4 3 1 4 3
如果你想讓函式fun計算 %c 可能你需要使用
fun $a $b;
輸出:
4
3
9
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412561.html
標籤:
下一篇:與Dlookup功能相反
