这个命令式代码的功能样式是什么? (这恰好是Powershell,但我对Powershell和语言无关的解决方案感兴趣。)
$part1=1,2
$part2='a','b','c'
$part3=1,2,3,4
[System.Collections.ArrayList]$n= @()
foreach($x in $part1)
{
foreach($y in $part2)
{
foreach($z in $part3)
{
$n.Add("$x$y$z")
}
}
}
$n
这里有一些在Powershell中进行map,filter和reduce的简单提示,表明功能样式是可行的: http://peterreavy.com/tech/2014/04/30/Map,-reduce-and-filter-in-PowerShell.html
编辑:所需的输出是包含24个项目的集合: 1a1,1a2,1a3,1a4,1b1,1b2,1b3,1b4,1c1,1c2,1c3,1c4, 2a1,...,2a4,2b1,...,2c4
答案 0 :(得分:1)
不确定您要找的是什么,但您可以这样写:
$part1=1,2
$part2='a','b','c'
$part3=1,2,3,4
$n = $part1 | % {$a=$_;$part2 | %{$b=$_;$part3 | % {"$a$b$_"}}}
备注:
您可以在powershell中编写这样的代码。 @()
是一个集合,+=
对添加项目的集合进行操作。请注意$n.Add("$x$y$z")
返回一个整数。
$part1=1,2
$part2='a','b','c'
$part3=1,2,3,4
$n= @()
foreach($x in $part1)
{
foreach($y in $part2)
{
foreach($z in $part3)
{
$n += "$x$y$z"
}
}
}
$n