【发布时间】:2022-01-16 08:59:00
【问题描述】:
我有一个简单的脚本,它创建二维字符数组,并调用函数,该函数应该用给定的字符填充该数组。
[int]$size = Read-Host "Please, enter the board size"
$playerBoard = New-Object 'char[,]' $size,$size
Fill-Boad-With-Symbol($playerBoard,'*',$size)
这里是函数
function Fill-Boad-With-Symbol([char[,]]$board, [char]$symbol,[int]$boardSize){
for ($i=0; $i -lt $boardSize; $i++) {
for ($j=0; $j -lt $boardSize; $j++) {
$board[$i,$j] = $symbol
}
}
}
但是在执行此代码时,我收到以下错误:
Cannot process argument transformation on parameter 'board'. Cannot convert the "System.Char[,]" value of type "System.Char[,]" to type "System.Char"
...
+ Fill-Boad-With-Symbol($playerBoard,'*',$size)
请解释一下,我做错了什么?
【问题讨论】:
-
$playerBoard通过Fill-Boad-With-Symbol后,您的预期输出是什么? -
@SantiagoSquarzon 我希望 $playerBoard 将填充 '*'
-
您的错误是因为您调用函数的方式,在 PS 中,参数是命名的或位置的,每个参数由空格分隔 =>
Fill-Boad-With-Symbol $playerBoard '*' $size。我还认为您对New-Object 'char[,]' $size,$size在控制台中的外观有错误的期望。 -
这将是一个二维数组,但它看起来不像您期望的那样。它将是控制台上的一条垂直线。
-
@SantiagoSquarzon,我知道,我有单独的函数将其打印为二维数组
标签: function powershell arguments