Bya*_*aku 1 arrays powershell multidimensional-array
我目前正在尝试创建一个程序来训练一门外语。为此,我有两个一维数组。在第一个中,我存储了所有外语音节或单词,在第二个中,我用我的母语存储了答案:
$QuestionArray = New-Object System.Collections.ArrayList
$QuestionArray = "Word1","Word2","Word3"
$AnswerArray = New-Object System.Collections.ArrayList
$AnswerArray = "Answer1","Answer2","Answer3"
Run Code Online (Sandbox Code Playgroud)
之后我检查输入的值是否在答案数组内。如果是我从问题数组中选择随机选择的单词的索引和索引。如果两个索引匹配,则问题已得到正确回答,否则为错误。
$RandomQuestion = $QuestionArray | Get-Random
$Answer = $InputTextbox.Text
$IndexPositionQuestion = [array]::indexof($QuestionArray, $RandomQuestion)
$IndexPositionAnswer = [array]::indexof($AnswerArray, $Answer)
If($IndexPositionAnswer -eq $IndexPositionQuestion){
$RightTextbox.Text = $script:countercorrect++
}else{
$WrongTextbox.Text = $script:counterwrong++
}
Run Code Online (Sandbox Code Playgroud)
该程序按预期运行,但是当我今天向一位同事展示它时,他只是告诉我该程序的比较部分编码很丑陋,并且不是最佳实践。
我怎么能以任何其他方式去做呢?我读了一些关于多维数组的内容,但我无法理解它。我将如何从多维数组中受益?我如何从中选择我需要的值来显示、比较、检查等?
在深入研究多维数组之前,为什么不尝试使用哈希表之类的数组呢?
$array = @(
@{
Question = 'blah?'
Answer = 'blub'
},
@{
Question = 'james'
Answer = 'Dean'
}
)
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式引用这些值
for($i = 0; $i -lt $array.Count; $i++){
$array[$i].Question
$array[$i].Answer
}
Run Code Online (Sandbox Code Playgroud)
在你的例子中尝试类似的东西
$RandomQuestionNr = 0..($QuestionArray.count -1) | Get-Random
$Answer = $InputTextbox.Text
if($array[$RandomQuestionNr].answer -eq $Answer){
$RightTextbox.Text = $script:countercorrect++
}else{
$WrongTextbox.Text = $script:counterwrong++
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4850 次 |
| 最近记录: |