类似Powershell的算子不是可交换的

Sab*_*ncu 3 powershell commutativity

考虑以下:

$var = 'Now is the time'
if ($var -like 'Now*') { 'true' } else { 'false' }
Run Code Online (Sandbox Code Playgroud)

输出:true

现在将两个操作数交换为-like运算符:

if ('Now*' -like $var) { 'true' } else { 'false' }
Run Code Online (Sandbox Code Playgroud)

输出:false

类似的运算符不是可交换的.这是预期的吗?

我在Win 7上,使用PS版本2.谢谢.

Dav*_*vic 6

-Like 表现不可交换 - 这是预期的.

一些要点:

  1. 上述评论的讨论摘要:交换性将推出歧义:'Hello.*' -like 'Hello?'-将这项收益true或者false-like交换?因此,只允许在右侧使用通配符.如果它们出现在左侧大小,则它们被视为文字 - 而不是通配符.

如果其他人有其他有效点:随时编辑或给出更好的答案.