Как я могу выделить хеш-таблицу непосредственно из статического метода класса? - PullRequest
0 голосов
/ 06 октября 2018

Как я могу получить такой же результат как:

$ht = @{Object="Hi there";Foregroundcolor="Green"}
Write-Host @ht

без использования / переменной $ht?

Не поймите меня неправильно, я знаю, как использоватьбазовый CMDLet.У меня есть статический метод, который генерирует динамические хеш-таблицы.Посмотрите на этот упрощенный пример кода:

class HashtableGenerator
{
    static [hashtable]Answer()
    {
        return @{Object="Hallo Welt";ForegroundColor="Green"}
    }
}
$ht = [HashtableGenerator]::Answer()
Write-Host @ht

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

Write-Host @([HashtableGenerator]::Answer()) # Doesn't work

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Я почти уверен, что то, что вы хотите сделать, по крайней мере в настоящее время невозможно.Splatting явно относится к хеш-таблице и массиву переменных .Не возвращать значения функций, методов и т. Д. Техника для сплаттинга вроде поддерживает это

Сплаттинг - это метод передачи набора значений параметров в команду как единое целое.PowerShell связывает каждое значение в коллекции с параметром команды. Значения разбитых параметров хранятся в именованных переменных разбрызгивания , которые выглядят как стандартные переменные, но начинаются с символа At (@) вместо знака доллара ($).Символ At сообщает PowerShell, что вы передаете коллекцию значений вместо одного значения.

Использование @ вне этого указывает PowerShell обрабатывать результаты как массив.Во IIRC есть запрос на полусвязанную функцию, который разделяет непосредственно из определения хеш-таблицы, а не сначала сохраняет в переменную.


Смежный вопрос о разделении на части из свойства переменной: Разделение функции со свойством объекта

0 голосов
/ 06 октября 2018

Передача параметров функции с использованием hashtable точно так же, как вы неявно указываете их.Ключ хэш-таблицы работает как имя параметра, а соответствующее значение хеш-таблицы используется в качестве значения параметра.

Write-Host -Object 'Hi there' -Foregroundcolor 'Green'
...