2017-02-01 2 views
6

composer.jsonファイルのpipeとdouoble pipeの違いは何ですか?たとえば:Composer.pharの差異| ||

"^1.0.0 || ^2.0.0" 

'^1.0.0|^2.0.0' 
+0

私が見つけたことから、彼らは同じです。しかし、正しくないかもしれません。 – Antony

+0

||それは論理ORとして扱われます –

+1

@ Shanukk ok、ですから、論理パイプと単一パイプの違いは何ですか? – Roman678

答えて

1

違いがあるということ| (シングルパイプ)はビット単位で、またはと|| (二重管)は論理または ||論理OR演算子です。あなたは基本的にそれが何であるかを知っているように聞こえる。 if、whileなどの条件文で使用されます。

condition1 || condition2 

"||"は最初から順番にチェックインします。順序どおりの条件が真であれば、||さらなるチェックを止める。条件文でより効率的です

|ビットごとのOR演算子です。それは2つの数字で動作するために使用されます。個々の数字の各ビットを個別に見て、少なくとも1つの数字のうちの1つが1である場合、結果のビットも1になります。いくつか例があります:

A = 01010101 
B = 10101010 
A | B = 11111111 

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

'^ 1'いいよ、素敵な説明。 –

+0

@Shanukk私はビット演算子の仕組みを理解していますが、バージョンの制約の違いは何か分かりません。 2つの例を見てください _^1.5.0 |^2.0.0_と **^1.5.0 || 2.0.0 **。 _^1.5.0_はtrueまたはfalseのみを返します。 **^2.0.0 **もtrueまたはfalseのみを返すことができます。 だから、違いはありません: _bool | bool_ AND ** bool ||ブール**。 ? 「はい」の場合、違いは何ですか?いいえの場合、composer.pharの2つの異なる演算子の理由は何ですか? – Roman678

+0

composer.pharのバージョン制約では、 '|'と '|| 'の間に違いはありません – Ostin

1

私はそれが作曲者OR論理演算子の古い構文だと思います。 私は、この参照が見つかりました:http://qpleple.com/understand-composer-versions(パイプ文字を検索)

導入では、それは言う:ここ

が に改組Composerの文書から一部を抽出し、より良い方法をパッケージのバージョンと安定の仕事

を理解しています

現在のコンポーザーのドキュメントでは参照できませんでしたが、これは旧バージョンのドキュメントからのものとみなされます

8

彼らは同じです。

あなたはVersionParserクラス(https://github.com/composer/semver/blob/1dd67fe56c0587d0d119947061a6bfc9863c101c/src/VersionParser.php#L237)を調べる場合は、次のコードを見ることができます:私たちは正規表現で見ることができるように

$orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints)); 

を、彼らがしているのですか? 2番目のパイプの後に、オプションにします。

二重管だけが文書化されているようです。 (https://getcomposer.org/doc/articles/versions.md#range

+0

単一のパイプは廃止予定ですが、下位互換性のために残されています。あなたのpreg_splitの参照にスポットがあります。 – Scriptonomy

関連する問題