composer.json文件中管道和douoble管道有什么区别?例如:
"^1.0.0 || ^2.0.0"
和
'^1.0.0|^2.0.0'
答案 0 :(得分:10)
他们是一样的。
如果您查看VersionParser类(https://github.com/composer/semver/blob/1dd67fe56c0587d0d119947061a6bfc9863c101c/src/VersionParser.php#L237),可以看到以下代码:
$orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints));
正如我们在正则表达式中看到的那样,它们是一个?在第二个管道之后,使其成为可选项。
似乎只记录了双管。 (https://getcomposer.org/doc/articles/versions.md#range)
答案 1 :(得分:1)
区别在于| (单个管道)按位或和|| (双管道)逻辑或 ||是逻辑OR运算符。听起来你基本上知道那是什么。它在条件语句中使用,例如if,while等。
condition1 || condition2
" || "将从头开始按顺序检查。如果发现顺序中的任何条件为真,那么||停止进一步检查。所以||在条件语句中更有效率
|是按位OR运算符。它曾经用于操作两个数字。您可以单独查看每个数字的每个位,如果其中一个位在至少一个数字中为1,那么结果位也将为1。以下是一些例子:
A = 01010101
B = 10101010
A | B = 11111111
A = 00000001
B = 00010000
A | B = 00010001
答案 2 :(得分:1)
我认为这是作曲家OR逻辑运算符的旧语法。 我找到了这个引用:http://qpleple.com/understand-composer-versions(搜索管道符)
在介绍中说:
以下是重组的Composer文档的一些摘录 更好地了解包版本和稳定性如何工作
但我在当前的作曲家文档中找不到任何引用,然后我假设这是来自旧版本的文档