我找不到传递函数的方法。只是变数。
没有将函数放在 ForEach 循环中的任何想法?
function CustomFunction {
Param (
$A
)
Write-Host $A
}
$List = "Apple", "Banana", "Grape"
$List | ForEach-Object -Parallel {
Write-Host $using:CustomFunction $_
}
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我使用XML来导入类的各种实例.我需要在List中导入.问题是如何在Dictionary中导入所有"dynamicDrop":
XML:
<LootProfile name="volpeNormale">
<dynamicDropNumber>3</dynamicDropNumber>
<dynamicDrop>70</dynamicDrop>
<dynamicDrop>40</dynamicDrop>
<dynamicDrop>10</dynamicDrop>
<dynamicTypeArmor>33</dynamicTypeArmor>
<dynamicTypeWeapon>33</dynamicTypeWeapon>
<dynamicTypeConsumable>34</dynamicTypeConsumable>
<dynamicRarityCommon>70</dynamicRarityCommon>
<dynamicRarityUncommon>20</dynamicRarityUncommon>
<dynamicRarityRare>8</dynamicRarityRare>
<dynamicRarityEpic>2</dynamicRarityEpic>
<staticDropNumber>2</staticDropNumber>
<staticDrop idPattern="100">60</staticDrop>
<staticDrop idPattern="145">100</staticDrop>
<faction>All</faction>
<location>All</location>
</LootProfile>
Run Code Online (Sandbox Code Playgroud)
XMLImporter查询:
var query = from item in xml.Root.Elements("LootProfile")
select new LootProfile()
{
name = (string)item.Attribute("name"),
dynamicDropNumber = (int)item.Element("dynamicDropNumber"),
dynamicDrop = (Dictionary<int,string>)item.Element("dynamicDrop) //this one doesnt work!
//other element....
}
return query.ToList<LootProfile>();
Run Code Online (Sandbox Code Playgroud) 显然,由于compareItem变量的多个声明,以下代码是错误的.但是为了理解这是我希望这个代码工作的方式.
switch (objectType)
{
case "Armor":
Item compareItem = player.armor;
break;
case "Shield":
Item compareItem = player.shield;
break;
case "Medikit":
Item compareItem = player.medikit;
break;
case "Grenade":
Item compareItem = player.grenade;
break;
case "Weapon":
Item[] compareItem = player.weapons;
break;
case "Bullet":
Item [] compareItem = player.bullets;
break;
default:
return;
}
Run Code Online (Sandbox Code Playgroud)
什么是根据交换机的结果实现比较Item类或Item类数组的compareItem的最佳方法是什么?