PowerShell: ◆$host.UIのプロンプト入力機能を使う2ではジェネリックな「System.Collections.ObjectModel.Collection」を手作りしていたのだが、明示的にジェネリックなクラスを使わなくても暗黙にキャストしてくれることが判った。
今回の例で行くと、
System.Collections.ObjectModel.Collection<ChoiceDescription>を指定すべきところに、ChoiceDescription[]を指定すればよさそうである。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 | $class = "System.Management.Automation.Host.ChoiceDescription" $dClass = [type]$class $dClassArray = [type]($class+"[]") $questions = (("&1:巨人"),("読売ジャイアンツ")),(("&2:阪神"),("阪神タイガース")), (("&3:中日"),("中日ドラゴンズ")),(("&4:横浜"),("横浜ベイスターズ")), (("&5:ヤクルト"),("東京ヤクルトスワローズ")),(("&6:広島"),("広島東洋カープ")) $descriptions = ($questions | %{New-Object $dclass $_}) -as $dClassArray $caption = "<アンケート>" $message = "好きな球団はどこですか?" $result = $host.UI.PromptForChoice($caption, $message, $descriptions,2) Write-Host $descriptions[$result].Label.replace("&","") "ですね" $winner = {Get-Random (0..($questions.Count-1) | %{$questions[$_][1]})} "`n来年以降の優勝予想は" 1..4 | %{invoke-command $winner} "となっています。" $winner2 = Set-PSBreakpoint -Variable winner2 -Mode Read -Action { $script:winner2 = Get-Random (0..($questions.Count-1) | %{$questions[$_][1]})} "`n2位予想は" 1..4 | %{$winner2} "となっています。" |
0 件のコメント:
コメントを投稿