какие плохие последствия может иметь использование массива «в этой ситуации»? - PullRequest
0 голосов
/ 14 мая 2019

У меня два вопроса, я играю с PS и пробую новые вещи, я написал небольшой скрипт, который генерирует полные имена, экспортируя имена из txt.file и фамилии из другого txt.file и, наконец, случайным образом комбинирует 2 для создания полного имени, это сценарий:

$Firstnames = Get-Content -Path 'C:\Users\user\Desktop\Firstname.txt'
$Lastnames = Get-Content -Path 'C:\Users\user\Desktop\Lastnames.txt'
$feminine = $firstnames | ?{$_ -like "*;frau"} | %{$_.Split(';')[0]}
Write-Host "Random full name generator"
$numberofNames = 1..(Read-Host 'how many combination do you want to generate?')
$numberofNames | foreach {
    $f = $feminine[ (Get-Random $feminine.count)]
    $l = $Lastnames[ (Get-Random $Lastnames.count)]
$full =  $f+" "+$l 

 Write-output $full  
 }

1 - теперь $ numberofNames - это массив «оператор диапазона», я хотел бы знать, какие плохие последствия может иметь этот метод? это лучший подход для ввода пользователей?

2 - в чем основная разница между использованием, например, $a = 100 и $a = 1..100?

на случай, если вам нужно знать: $ firstnames выглядит примерно так:

 Linda;frau
 Aline;frau
 Lisa;frau
 Katja;frau
 Karen;frau

и $ фамилии:

  smith
  anderson
  müller
  klein
  Rex

спасибо

1 Ответ

1 голос
/ 14 мая 2019

1 - теперь $ numberofNames - это массив «оператор диапазона», я хотел бы знать, какие плохие последствия может иметь использование этого метода?Это лучший подход для ввода пользователей?

Это действительно.Даже если пользователь добавляет, например, строку в качестве входных данных, Powershell выдаст ошибку, из-за которой он не может преобразовать ввод в int:

 1 .. "test" | % {Write-Host $_ }
 Cannot convert value "test" to type "System.Int32". Error: "Input string was not in a correct format."
 At line:1 char:1
 + 1 .. "test" | % {Write-Host $_ }
 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
     + FullyQualifiedErrorId : InvalidCastFromStringToInteger

Даже в нег.int не должно быть проблемой, поскольку вы не используете содержимое массива для каких-либо операций индексирования.

2 - в чем ключевое отличие между использованием, например, $ a = 100 и $ a= 1..100?

$a = 100 указывает на целое число со значением 100. $a = 1..100 - массив с 100 записями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...