2017-02-01 7 views
6

В чем разница между трубой и трубой douoble в файле composer.json? Например:Разница между композитором.phar между | и ||

"^1.0.0 || ^2.0.0" 

и

'^1.0.0|^2.0.0' 
+0

Из того, что я нашел, они такие же. Может быть, не прав, хотя – Antony

+0

|| он рассматривается как логический ИЛИ –

+1

@Shanukk ok, так в чем же разница между логическим или одиночным каналом? – Roman678

ответ

1

Разница заключается в том, что | (однотрубная) - поразрядная или и || (двойная труба) логический или || является логическим оператором OR. Похоже, вы в основном знаете, что это такое. Используется в условных операторах, например, если, в то время как и т. Д.

condition1 || condition2 

«||» будет проверять последовательность, начиная с первой. Если любое условие в последовательности окажется истинным, то || останавливает дальнейшую проверку. является более эффективным в условных заявлениях

| является побитовым оператором ИЛИ. Он используется для работы с двумя номерами. Вы смотрите каждый бит каждого номера отдельно и, если один из битов равен 1, по крайней мере, одному из чисел, тогда результирующий бит будет равен 1. Вот несколько примеров:

A = 01010101 
B = 10101010 
A | B = 11111111 

A = 00000001 
B = 00010000 
A | B = 00010001 
+2

'^ 1 Хороший, приятное объяснение. –

+0

@Shanukk Я понимаю, как работают побитовые операторы, но я не понимаю, в чем разница в ограничениях версии. Взгляните на два примера: _^1.5.0 |^2.0.0_ и **^1.5.0 || 2.0.0 **. _^1.5.0_ может возвращать только true или false, не так ли? **^2.0.0 ** также может возвращать только true или false, правильно? так, нет никакой разницы между: _bool | bool_ И ** bool || BOOL **. право? если да, в чем разница? если нет, в чем причина двух разных операторов в composer.phar? – Roman678

+0

В ограничениях версии версии composer.phar нет разницы между '|' и '||' – Ostin

1

Я думаю, что это старый синтаксис композитора или логического оператора. Я нашел эту ссылку: http://qpleple.com/understand-composer-versions (поиск по характеру трубы)

Во введении говорится:

Вот некоторые выдержки из документации композитора реорганизованной в лучше понять, как версии пакетов и работа стабильности

но я не мог найти ссылку в документации текущего композитора, тогда я предполагаю, что это из старой версии документов.

8

Они такие же.

Если посмотреть в класс 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)

+0

Единственный канал устарел, но сохраняется для обратной совместимости. Ваша ссылка preg_split включена. – Scriptonomy

 Смежные вопросы

  • Нет связанных вопросов^_^