鉴于 List<Command> commandList = new List<Command>();
Command command1 = new Command("set-adserversettings");
CommandParameter parameter1 = new CommandParameter("viewentireforest", true);
command1.Parameters.Add(parameter1);
commandList.Add(command1);
Command command2 = new Command("set-userphoto");
CommandParameter parameter2a = new CommandParameter("identity", tbxName.Text);
CommandParameter parameter2b = new CommandParameter("picturedata", displayedImage);
CommandParameter parameter2c = new CommandParameter("domaincontroller", "xx-xx-xx-01.xx.xx.xx.xxx");
CommandParameter parameter2d = new CommandParameter("confirm", false);
command2.Parameters.Add(parameter2a);
command2.Parameters.Add(parameter2b);
command2.Parameters.Add(parameter2c);
command2.Parameters.Add(parameter2d);
commandList.Add(command2);
Pipeline pipeline;
Collection<PSObject> exResults = null;
foreach (Command cmd in commandList)
{
pipeline = runspacee.CreatePipeline();
pipeline.Commands.Add(cmd);
exResults = pipeline.Invoke();
}
struct
:
Foo
要创建一个内置不同字符串的struct Foo<'a> {
info: &'a str
}
个array
,我希望有一个宏,可以像以下一样使用:
Foo
我特别困惑的是如何迭代第二个参数中指定的特定次数。
答案 0 :(得分:1)
目前,据我所知,不可能创建一个可以按照您的意愿完全的宏。它只有种可能。我会解释一下:
"test 1"
,"test 2"
等的原因。它只是不可能。但是,您可以使用标准数组初始值设定项"test"
创建仅使用[val; n]
作为字符串的结构数组。Copy
。但在你的情况下,这不是一个大问题,因为你的结构可以只是派生它。让我们看看,我们能做些什么(playground):
#[derive(Clone, Copy, PartialEq, Debug)]
struct Foo<'a> {
info: &'a str
}
macro_rules! make_foo {
($info:expr; $num:expr) => {
[Foo { info: $info }; $num]
}
}
首先,我们需要为你的结构派生一些特征:
Copy
,见上文Clone
需要Copy
{li> PartialEq
和Debug
是assert_eq!()
我认为宏本身很容易理解:它只是在内部使用数组初始化器。
但如何准确了解问题中提出的行为?
不要使用宏,也不要使用固定大小的数组。正常函数和Vec<T>
可能很好。你当然可以 编写一个编译器插件,但是现在它们不稳定,无论如何它可能都不值得麻烦。