Jaka jest różnica między rurą a rurą podwójną w pliku composer.json? Na przykład:Composer.phar różnica między | i ||
"^1.0.0 || ^2.0.0"
i
'^1.0.0|^2.0.0'
Jaka jest różnica między rurą a rurą podwójną w pliku composer.json? Na przykład:Composer.phar różnica między | i ||
"^1.0.0 || ^2.0.0"
i
'^1.0.0|^2.0.0'
Różnica jest taka, że | (pojedyncza rura) to bitowa lub i || (podwójna rura) to logiczna lub || jest logicznym operatorem OR. Wygląda na to, że w zasadzie wiesz, co to jest. Jest używany w instrukcjach warunkowych, takich jak: if, while, itp.
condition1 || condition2
"||" będzie sprawdzać w kolejności od pierwszego. Jeśli jakikolwiek warunek w sekwencji zostanie uznany za prawdziwy, wówczas || przestaje się dalej sprawdzać.so || jest bardziej wydajny w instrukcjach warunkowych
| jest bitowym operatorem OR. Jest używany do działania na dwóch liczbach. Patrzysz na każdy bit każdej liczby osobno, a jeśli jeden z bitów wynosi 1 w co najmniej jednej z liczb, wynikowy bit będzie równy 1. Oto kilka przykładów:
A = 01010101
B = 10101010
A | B = 11111111
A = 00000001
B = 00010000
A | B = 00010001
'^ 1' Dobrze, miłe wyjaśnienie. –
@Shanukk Rozumiem działanie operatorów bitowych, ale nie rozumiem, jaka jest różnica w ograniczeniach wersji. Spójrz na dwa przykłady: _^1.5.0 |^2.0.0_ i **^1.5.0 || 2.0.0 **. _^1.5.0_ może zwracać tylko wartość true lub false, prawda? **^2.0.0 ** również może zwrócić tylko wartość true lub false, prawda? , więc nie ma różnicy między: _bool | bool_ AND ** bool || bool **. prawo? jeśli tak, jaka jest różnica? jeśli nie, jaki jest powód dwóch różnych operatorów w composer.phar? – Roman678
W ograniczeniach wersji composer.phar nie ma różnicy między '|' a '||' – Ostin
Myślę, że jest to stara składnia operatora OR lub operatora logicznego. Znalazłem odniesienie: http://qpleple.com/understand-composer-versions (poszukiwanie znaku rury)
we wstępie mówi:
Oto niektóre wyciągi z dokumentacji kompozytora zreorganizowana do lepiej zrozumieć, jak wersje pakietów i praca stabilność
ale nie mogłem znaleźć żadnego odniesienia w aktualnej dokumentacji kompozytora, wtedy zakładam, że jest to ze starej wersji dokumentacji
Są takie same.
Jeśli spojrzeć w klasie VersionParser (https://github.com/composer/semver/blob/1dd67fe56c0587d0d119947061a6bfc9863c101c/src/VersionParser.php#L237) można zobaczyć następujący kod:
$orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints));
Jak widzimy w regex, są to? po drugiej rurze, co czyni ją opcjonalną.
Wygląda jednak na to, że tylko podwójna rura jest udokumentowana. (https://getcomposer.org/doc/articles/versions.md#range)
Pojedyncza potok jest przestarzała, ale zachowana dla zgodności wstecznej. Twoje referencje preg_split są na miejscu. – Scriptonomy
Z tego, co znalazłem, są takie same. Może nie mieć jednak racji: – Antony
|| jest traktowany jako logiczny OR –
@Shanukk ok, więc jaka jest różnica między logiczną lub pojedynczą rurą? – Roman678