小编lim*_*ime的帖子

PowerShell必需参数取决于另一个参数

我有一个PowerShell函数,它可以更改注册表项值.码:

param(
    [Parameter()] [switch]$CreateNewChild,
    [Parameter(Mandatory=$true)] [string]$PropertyType
)
Run Code Online (Sandbox Code Playgroud)

它有一个参数"CreateNewChild",如果设置了该标志,该函数将创建key属性,即使找不到它也是如此.参数"PropertyType"必须是必需的,但仅限于已设置"CreateNewChild"标志.

问题是,如何强制执行参数,但仅在指定了其他参数的情况下?

好的,我一直在玩它.这确实有效:

param(
  [Parameter(ParameterSetName="one")]
  [switch]$DoNotCreateNewChild,

  [string]$KeyPath,

  [string]$Name,

  [string]$NewValue,

  [Parameter(ParameterSetName="two")]
  [switch]$CreateNewChild,

  [Parameter(ParameterSetName="two",Mandatory=$true)]
  [string]$PropertyType
)
Run Code Online (Sandbox Code Playgroud)

但是,这意味着$ KeyPath,$ Name和$ NewValue不再是强制性的.将"one"参数设置为必需会中断代码("参数集无法解析"错误).这些参数集令人困惑.我确定有办法,但我无法弄清楚如何做到这一点.

registry parameters powershell flags dependencies

16
推荐指数
1
解决办法
3万
查看次数

无法使用boost.sh脚本生成的Boost框架cmake cpp-netlib

我正在尝试使用cmake编译cpp-netlib.

我的配置:OS X 10.9.1 Mavericks + Xcode 5.0.2 cpp-netlib 0.11.0 cmake 2.8.12.2 Boost 1.55.0

因为我试图让整个事情与OS X和iOS 7一起工作,所以我使用以下脚本创建了一个Boost框架:https: //github.com/mgrebenets/boost-xcode5-iosx

我做了一个没有c ++ 11的干净安装,例如:"$ ./boost.sh clean -v 1.55.0"

这产生了两个"boost.framework"目录,一个用于OS X,第二个用于iOS.我已经在"Build Phases> Link Binary With Libraries"中成功地将OS X Boost框架添加到我的Xcode项目中,并测试了Boost文档中的boost :: regex示例,该文档在我的Mac上运行良好.

但是,当我开始制作cpp-netlib时,我遇到了问题.当我尝试运行时:

$ cmake -DCMAKE_BUILD_TYPE = Debug -DCMAKE_C_COMPILER = gcc -DCMAKE_CXX_COMPILER = g ++ ../cpp-netlib-0.11.0-final/

它产生以下输出:

-- The C compiler identification is Clang 5.0.0
-- The CXX compiler identification is Clang 5.0.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working …
Run Code Online (Sandbox Code Playgroud)

c++ macos boost ios cpp-netlib

5
推荐指数
1
解决办法
1259
查看次数

正则表达式在Sublime 3中将"array()"更改为"[]"

又一个RegEx问题.我有很多PHP文件要从数组('foo','bar')更改为新样式['foo','bar']

到目前为止,我想出了这个:

array\(([^\(]*?)\)
Run Code Online (Sandbox Code Playgroud)

但它没有采用多行定义.我尝试过类似的东西,但更糟糕的是,因为它拾取了错误的右括号:

(?s)array\(([^\(].*?)\)
Run Code Online (Sandbox Code Playgroud)

例如,一些需要替换的数据:

$foobar = $this->foobar('foo_bar', array(
    'foo'   =>  array('foobar' => array('barfoo')),
    'bar' => array(
        'bar' => 'foobar',
        'foo' => 'barfoo',
)));
Run Code Online (Sandbox Code Playgroud)

所以上面的例子看起来像这样:

$foobar = $this->foobar('foo_bar', [
    'foo' => ['foobar' => ['barfoo']],
    'bar' => [ 
        'bar' => 'foobar',
        'foo' => 'barfoo',
 ]]);
Run Code Online (Sandbox Code Playgroud)

任何人?谢谢!

php regex sublimetext sublimetext3

3
推荐指数
2
解决办法
625
查看次数