我找到了这个很棒的帖子:在带参数的函数上使用Invoke-Command -ScriptBlock
我正在尝试使函数call(${function:Foo}
)动态,因为我想传递函数名称.
我试过这个:
$name = "Foo"
Invoke-Command -ScriptBlock ${function:$name}
Run Code Online (Sandbox Code Playgroud)
但那失败了.我也尝试了各种转义序列,但是不能让函数名称变为动态.
编辑:为了清楚起见,我添加了一个小测试脚本.当然,期望的结果是打电话给ExternalFunction
.
Function ExternalFunction()
{
write-host "I was called externally"
}
Function InternalFunction()
{
Param ([parameter(Mandatory=$true)][string]$FunctionName)
#working: Invoke-Command -ScriptBlock ${function:ExternalFunction}
#not working: Invoke-Command -ScriptBlock ${invoke-expression $FunctionName}
if (Test-Path Function:\$FunctionName) {
#working,but how to use it in ScriptBlock?
}
}
InternalFunction -FunctionName "ExternalFunction"
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的文本文件:
marc_webber
john_grisham
rahmin_darfur
firstname_lastname
Run Code Online (Sandbox Code Playgroud)
我希望输出像这样(忘记像"van These"这样的双重名称):
Webber, Marc, marc_webber
Grisham, John, john_grisham
Darfur, Rahmin, rahmin_darfur
LastName, FirstName, firstname_lastname
Run Code Online (Sandbox Code Playgroud)
所以我想在_处分割字符串,将姓氏移到开头,逗号分隔名字和连接名称到结尾(甚至可以大写第一个字母).使用编程语言这很容易,但我想知道是否可以使用Notepad ++的查找和替换功能与正则表达式.
基本上我需要为名字和姓氏创建变量,并在最后将它们再次串在一起.
因为我需要空标记来读取空字符串或null,我决定使用apache commons lang StrTokenizer
但是我仍然无法获得空字符串.我知道我需要setEmptyTokenAsNull
在标记之前设置方法.但是我该怎么做呢?请帮忙.
tok = new StrTokenizer(line,",");
tok.setEmptyTokenAsNull(true);
Run Code Online (Sandbox Code Playgroud) 我目前在我面前有一个非常棒的if-then-else循环,它首先从web服务获得多个cantinas.然后它会获得所有可用餐点(每个菜单)和所有可用的配菜(每个菜单).对于每一餐和两餐,然后检查所有添加剂并聚集它们.
最后,我有多种菜单,包括餐点,配菜和所有添加剂.
以下流程图显示了该过程:
我想美化代码,并希望使用jQuery的promises - 但我无法弄清楚如何做到这一点,因为我必须在a then
之后堆叠when
(至少我认为,也许我必须resolve
?).以下是我最好的尝试:
//this totally does not work at all, but you get the idea what I want to do
Menus.getCantinas()
.when(Menus.getMeals(cantinas), Menus.getSides(cantinas)) //when doesn't exist here, neither does cantinas
.then(Menus.getAdditives(meals, sides) //also throws errors as meals and sides does not exist
.done(function(cantinas, meals, sides, additives) { //more errors for the people
Menus.cantinas = cantinas;
Menus.meals = meals;
Menus.sides = sides;
Menus.additives = additives;
//... some html stuff to build …
Run Code Online (Sandbox Code Playgroud) 我正在使用XML来保存一些设置,所以让我们使用以下示例:
<PermissionLevels>
<Permission Name="MyPermission 1" Bases="XXX" />
<Permission Name="MyPermission 2" Bases="XXX" />
</PermissionLevels>
Run Code Online (Sandbox Code Playgroud)
所以XXX是我的问题.我将拥有几个基本权限,例如"读取,创建,删除",我知道C#有.Split
方法,所以我可以尝试用","作为分隔符.我也可以有子节点<Permission>
.
有没有正确的方法呢?正确的我的意思是:我不确定我是否应该使用LINQ(XDocument
)或常规System.Xml
变量(XmlDocument
),我不确定是否有更好的处理方式.
随着.Split
我将不得不采取的node.Attributes["Base"].Value
,把它分解,并做了foreach
所有元素的数组中-也许LINQ是更聪明,可以做不同的东西吗?
对不起我的漫无边际,这不是我的域名.问题实际上是:当我为一个属性设置多个值时,是否将它们与例如","连接起来,或者我是否以不同方式进行连接(例如,使用对象的子节点)?
我不熟悉Perl的哈希/引用语法,它让我的眼睛受伤了.
我有以下JSON:
{
"Arg":"Custom_Light state alias protocol",
"Results": [
{
"Name":"Custom_Light",
"Internals": { },
"Readings": {
"protocol": { "Value":"V3", "Time":"2017-01-14 18:49:18" },
"state": { "Value":"off", "Time":"2017-03-05 10:39:50" }
},
"Attributes": { "alias": "Kitchen light" }
} ],
"totalResultsReturned":1
}
Run Code Online (Sandbox Code Playgroud)
如何直接获取Reading> Protocol Value和Reading> state Value以及Attributes> Alias?
我使用默认JSON
编码器/解码器,它的工作非常出色.使用Dumper($json)
我获取所有JSON,但我不知道如何直接访问它而不使用foreach与数组中的所有数组.
我尝试过以下方法:
my $json = from_json( $readout, { utf8 => 1 } );
print "No. Entries:", scalar(keys($json)); #works, returns 3
my @results = %$json{Results};
Dumper(@results[1]); #I get the Results array
Run Code Online (Sandbox Code Playgroud)
从这里开始它已经很难看了.在那 …