Вопрос по powershell, arrays, pointers, function – Есть ли указатель на функцию или массив функций в PowerShell?

10

Я хотел бы сделать что-то вроде этого. Индексируйте в массив функций и применяйте соответствующую функцию для нужного индекса цикла.

for ($i = 0; $i -lt 9; $i++)
{
    $Fields[$i] = $Fields[$i] | $($FunctionTable[$i])
}
#F1..F9 are defined functions or rather filter functions

$FunctionTable =  {F1}, 
                {F2}, 
                {F3},
                {F4},
                {F5},
                {F6},
                {F7},
                {F8},
                {F9}

Ваш Ответ

2   ответа
2

Вот что-то похожее, также используя & amp; оператор:

function f1
{ "Exec f1" }

function f2
{ "Exec f2" }

function f3
{ "Exec f3" }

function f4
{ "Exec f4" }

function UseFunctionList ( [string[]]$FunctionList )  
{  
foreach ( $functionName in $functionList )  
  {
  & $FunctionName
  }
}

function Go  
{  
'List 1'  
$FunctionList = 'f1','f2','f3','f4'  
UseFunctionList $FunctionList  
'List 2'  
$FunctionList = 'f4','f3','f2'  
UseFunctionList $FunctionList  
}

23

Вот пример того, как сделать это с помощью оператора вызова (& amp;).

# define 3 functions
function a { "a" }
function b { "b" }
function c { "c" }

# create array of 3 functioninfo objects
$list = @(
  (gi function:a),
  (gi function:b),
  (gi function:c)
)

0, 1, 2 | foreach {
  # call functions at index 0, 1 and 2
  & $list[$_]
}

-Oisin

постскриптум это означает, что ваш конвейер должен быть изменен на что-то вроде:

$Fields[$i] = $Fields[$i] | & $FunctionTable[$i]
Очень круто. Большое спасибо! tellingmachine

Похожие вопросы