Для указания параметров функции я бы выбрал форму 2, потому что для меня 1 слишком многословен / я хорошо привык. net языки, где functionname(argument1,argument2)
/ большинство C -подобного программирования языки не имеют отдельной строки внутри функции, которая описывает параметры, но это личное предпочтение
Вы можете указать имя аргумента с префиксом дефиса и указать аргументы в любом порядке. :
$z = Pass-Parameters1 -s1 $x -s2 $y
$z = Pass-Parameters1 -s2 $y -s1 $x
Вы можете разделять аргументы пробелами и предоставлять аргументы в следующем порядке:
$zzz = Pass-Parameters2 $x $y
Любой из них является правильным, и большинство языков имеют позиционные и именованные аргументы. Преимущество использования подхода с именованным аргументом состоит в том, что вы не хотите указывать все параметры. Также необходимо учитывать, что разработчики Power Shell могут заставить некоторые аргументы быть позиционными, а другие - именованными, поэтому иногда вам нужно указывать имена
Например, Write-Host может выводить массив вещей для вывода в качестве первого аргумента и имеет параметры для того, чтобы разделить их в качестве именованного аргумента (третий, как написано). Если вы хотели передать массив, но не указали второй аргумент (как написано, который управляет поведением новой строки), вам нужно Write-Host $someArray -separator ":"
- он смешивает позиционный и именованный А и должен быть представлен таким образом из-за способа позиционного / именованного был указан (Microsoft), в противном случае для записи просто будет дано больше вещей для вывода
Если вы указываете все аргументы или вам нужно только указать, например, первые 3 из 5 аргументов, используйте что более кратко, но читабельно. Если у вас есть (ужасная) привычка присваивать имена строковым переменным s1, s2, s3, то вызов Add-Person -name $s1 -address $s2 -ssn $s3
делает вещи читаемыми. Или используйте правильные имена переменных и Add-Person $name $address $ssn
, потому что более кратко / избыточно указывать имена параметров, когда переменная довольно неплохо описывает данные. Подумайте об использовании имен, если вы передаете строковые литералы: Add-Person "Markus Crescent" "Lee Street" "12345"
- это имя и адрес (хорошо, это растяжение, но подумайте, являются ли эти строки просто путями, такими как «файл для хранения» и «файл для удаления») ")
Этот преобразовал ваши X и Y в массив, передал его в первый параметр и ничего не передавал для второго ... который Write-Host затем должным образом напечатал содержимое массива в одну строку:
$zz = Pass-Parameters2 $x, $y