「:=」は何をしますか?


111

私は:=いくつかのコードサンプルで使用されているのを見てきましたが、付随する説明はありません。それの適切な名前を知らずにその使用をグーグルすることは正確には不可能です。

それは何をするためのものか?


11
どの言語で?
ベータ

4
通常:=、何かを定義するときに、それを通常の変数の変更と区別するために使用します。どのプログラミング言語について話しているのですか?
スヴェンス2011年

3
PL / SQL割り当て用です。しかし、別の言語が与えられた場合、その答えは真であることが保証されていません-それで、どの言語が例でしたか?
Andrew

12
このようなものを
ググる

3
パスカルはこの演算子を持っていると思います!

回答:


104

http://en.wikipedia.org/wiki/Equals_sign#In_computer_programming

コンピュータプログラミング言語では、等号は通常、数学での記号の使用法と一致する値の等価性をテストするブール演算子(PascalやEiffelなど)、または代入演算子(Cのような言語など)を示します。 )。前者の選択を行う言語は、多くの場合、コロン演算子(:=)または≔を使用して割り当て演算子を示します。後者の選択を行う言語では、しばしばブール等号演算子を示すために二重等号(==)を使用します。

注:私はこれを検索して見つけましたcolon equals operator


58
皮肉なことに、この回答はを検索しcolon equals operatorたときにWikipediaより上になりました。
nighthawk454

6
タイピングを続ける場合colon equals operator、GoogleのSEOに魔法をかけてこれを最高の結果にします
ATLUS

47

これはPascal の代入演算子であり、証明や疑似コードでよく使用されます。=C方言言語と同じです。

歴史的に、=平等の比較と割り当てに使用されたコンピューターサイエンスの論文。入力:=しにくい左矢印の代わりにPascalが使用されていました。Cは別の方向に進み、代わりに=and ==演算子を決定しました。


25

静的型付け言語では、Go :=は1つのステップで初期化と割り当てを行います。これは、コンパイルされた言語で変数のインタープリターのような作成を可能にするために行われます。

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42



0

これは、代入演算子の古い(パスカル)構文です。次のように使用されます。

a := 45;

他の言語でも、おそらく同じように使用されている可能性があります。


0

多くのCSブックでは、等価演算子と区別するために代入演算子として使用されてい=ます。ただし、多くの高級言語では、代入とは=平等です==


0

小なり記号<=を使用しない矢印のようなもので、誰もが「代入」演算子をすでに言っているように。等価の論理演算子とは対照的に、どこに何が設定されているかを明確にします。

数学ではそれはイコールのようですが、A:= BはAがBとして定義されていることを意味します。三重バーのイコールは、定義によって類似していて等しいと言いますが、常に同じというわけではありません。

とにかく、私はおそらくそれを発明した人々の心にあったこれらの他の参照を指摘しますが、それは実際には、等しいか等しい以下の平面が取られた(または= <と簡単に混同される可能性がある)だけであり、割り当てを定義するための新しい何かが必要であり、それは最も理にかなっています。

歴史的参照:最初にこれをSmallTalkで元のオブジェクト言語に見ました。AppleのSJはWindowsの部分のみをコピーし、MicrosoftのBGはそれらからさらに細かくされました(シングルスレッド)。最終的にNeXTのSJは、Xerox PARCから2番目に重要なレッスンを受講し、Objective Cになりました。

とにかく、彼らは後にパスカルによって普及したALGOL 1958から結腸と等しい助言演算子を採用した

https://en.wikipedia.org/wiki/PARC_(company)

https://en.wikipedia.org/wiki/Assignment_(computer_science)

通常、割り当てにより、変数はその存続期間とスコープのさまざまな時点で異なる値を保持できます。ただし、一部の言語(主に厳密に機能する)では、非ローカルな状態の変更を意味する可能性があるため、このような「破壊的な」再割り当てを許可していません。目的は、参照透過性、つまり一部の変数の状態に依存しない関数を強制することですが、任意の時点で特定のパラメトリック入力のセットに対して同じ結果を生成します。

https://en.wikipedia.org/wiki/Referential_transparency


0

VB.netの場合、

コンストラクター(この場合、Me = this in Java):

Public ABC(int A, int B, int C){
Me.A = A;
Me.B = B;
Me.C = C;
}

そのオブジェクトを作成するとき:

new ABC(C:=1, A:=2, B:=3)

次に、パラメーターの順序に関係なく、そのABCオブジェクトにはA = 2、B = 3、C = 1があります。

他の人があなたのコードを効果的に読むためのとても良い習慣です


-1

コロンイコールは、ASCIIが左矢印記号に到達するのと同じくらい近いので、アルゴールとその子孫(パスカルやエイダなど)で使用されていました。

C言語では、代入に等号を使用し、比較に二重等号を使用するという奇妙な規則が始まりました。

Prologでは、代入と同等性テストの間に区別はありません。


彼らが左矢印の近くにそれを望めば、彼らは<-ハスケルのように使うことができたでしょう。彼らは、で左矢印に近づこうとしていませんでし:=た。数学の「is defined as」演算子を使用していました:mathworld.wolfram.com/Defined.html
Variadicism

1
Pedantアラート:<-Haskellの割り当てではありません。Haskellには、Pascal、Adaなどの方法で破壊的な割り当てはありません。<-は、パラメーター置換のdo表記構文の一部です。これは、サブルーチン呼び出しでパラメーターに値を代入するプロセスに似ています。
マイケルがモニカチェリオを復元する

1
@Michael Fair十分です。あなたが正しい。私の悪い。とにかく、彼らが左矢印を模倣しようとした場合、彼らは使用しなかった:=であろう、彼らは使用したであろうという点が残ってい<-ます。
可変性主義
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.