“: =” Ne yapar?


111

:=Birkaç kod örneğinde kullanıldığını gördüm , ancak hiçbir zaman eşlik eden bir açıklama olmadan. Bunun için uygun adı bilmeden Google'da kullanımı tam olarak mümkün değildir.

Bu ne işe yarıyor?


11
Hangi dilde?
Beta

4
Normalde bir :=şeyi tanımlarken, onu düzenli değişken değişikliklerinden ayırmak için kullanırsınız .. Hangi programlama dilinden bahsediyoruz?
svens

3
PL / SQL atama içindir. Ancak farklı bir dil verildiğinde, bu cevabın doğru olacağı garanti edilmez - öyleyse örnek hangi dillerdeydi?
Andrew

12
Bunun gibi bir şeyi google'da
aramak için, onu heceleyin

3
Sanırım Pascal bu operatörü aldı!

Yanıtlar:


104

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

Bilgisayar programlama dillerinde, eşittir işareti tipik olarak, sembolün matematikteki kullanımıyla tutarlı olan değerlerin eşitliğini test etmek için bir boole operatörünü (örneğin, Pascal veya Eiffel'deki gibi) veya bir atama operatörünü (örneğin C benzeri dillerde olduğu gibi) belirtir. ). Önceki seçimi yapan diller, atama operatörlerini belirtmek için genellikle iki nokta üst üste (: =) veya ≔ kullanır. İkinci seçimi yapan diller, boole eşitlik operatörlerini belirtmek için genellikle bir çift eşittir işareti (==) kullanır.

Not: Bunu arayarak buldumcolon equals operator


58
İronik olarak, bu cevap arama sırasında artık Wikipedia'nın üstünde colon equals operator.
nighthawk454

6
Yazmaya devam edersek colon equals operator, bunu en iyi sonuç yapmak için Google'ın
SEO'sunda

47

Bu var atama operatörü Pascal ve genellikle provaları ve sözde kod kullanılır. =C lehçesi dillerindekiyle aynı şey .

Tarihsel olarak, bilgisayar bilimi makaleleri =eşitlik karşılaştırmaları ve ödevler için kullanılırdı . Pascal :=, yazması zor sol ok yerine geçerdi. C farklı bir yöne gitti ve bunun yerine =ve ==operatörlerine karar verdi .


25

Statik olarak yazılan dilde Go := , tek adımda başlatma ve atamadır. Derlenmiş bir dilde değişkenlerin yorumlanmış benzeri yaratılmasına izin vermek için yapılır.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42



0

Bu, atama operatörü için eski (pascal) sözdizimidir. Bu şekilde kullanılacaktır:

a := 45;

Muhtemelen benzer bir kullanımda başka dillerde de olabilir.


0

Pek çok CS kitabında, eşitlik operatöründen ayırt etmek için atama operatörü olarak kullanılır =. Ancak birçok yüksek seviyeli dilde, atama vardır =ve eşitlik vardır ==.


0

Bu, küçüktür sembolü kullanmayan bir ok gibidir <=, bu yüzden herkesin zaten söylediği gibi "atama" operatörü. Mantıksal denklik operatörünün aksine, nereye ayarlandığına netlik kazandırmak.

Matematikte bu eşittir gibidir, ancak A: = B, A'nın B olarak tanımlandığı anlamına gelir, üç çubuk eşittir, tanım gereği benzer ve eşit olduğunu ancak her zaman aynı şey olmadığını söylemek için kullanılabilir.

Her neyse, muhtemelen onu icat edenlerin zihninde olan bu diğer referanslara işaret ediyorum, ama gerçekten sadece eşitler ve daha az eşitler alındı ​​(veya muhtemelen = <ile karıştırıldı) ve atamayı tanımlamak için yeni bir şeye ihtiyaç vardı ve bu en mantıklıydı.

Tarihsel Referanslar: Bunu ilk olarak, Apple'ın SJ'sinin yalnızca Windows bölümünü kopyaladığı ve Microsoft'un BG'sinin bunlardan daha da sulandırıldığı (tek iş parçacıklı) orijinal Nesne Dili olan SmallTalk'ta gördüm. Sonunda NeXT'deki SJ, Xerox PARC'tan ikinci daha önemli dersi aldı ve bu ders, Hedef C oldu.

Her neyse, daha sonra Pascal tarafından popüler hale getirilen ALGOL 1958'den kolon-eşittir tahakkuk operatörünü aldılar.

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

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

Atamalar, tipik olarak bir değişkenin ömrü ve kapsamı boyunca farklı zamanlarda farklı değerler tutmasına izin verir. Bununla birlikte, bazı diller (esasen tam anlamıyla işlevsel olan), yerel olmayan devletin değişmesi anlamına gelebileceğinden, bu tür "yıkıcı" yeniden atamaya izin vermez. Amaç, referans şeffaflığı, yani bazı değişken (ler) in durumuna bağlı olmayan, ancak herhangi bir zamanda belirli bir parametrik girdi seti için aynı sonuçları üreten fonksiyonlar sağlamaktır.

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


0

VB.net için,

bir kurucu (bu durumda, Java'da Me = this):

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

o nesneyi yarattığınızda:

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

Daha sonra, parametrelerin sırasına bakılmaksızın, ABC nesnesinin A = 2, B = 3, C = 1 olduğu

Yani, başkalarının kodunuzu etkili bir şekilde okuması için çok iyi bir uygulama


-1

İki nokta üst üste, Algol'da ve onun Pascal ve Ada gibi soyundan gelenlerde kullanıldı çünkü ASCII'nin sol ok sembolüne en yakın olduğu yer.

Atama için eşittir ve karşılaştırma için çift eşittir kullanmanın garip kuralı C dili ile başlatıldı.

Prolog'da atama ile eşitlik testi arasında bir ayrım yoktur.


Sol oka yakın olmasını isteselerdi, <-Haskell'in yaptığı gibi kullanabilirlerdi. Sol oka yaklaşmaya çalışmıyorlardı :=, matematiksel 'tanımlı' operatörünü kullanıyorlardı: mathworld.wolfram.com/Defined.html
Variadicism

1
Bilgiçlik uyarısı: <- Haskell'de atama değildir. Haskell, Pascal, Ada vb. Gibi yıkıcı bir atamaya sahip değildir. <- parametre ikamesi için notasyon sözdiziminin bir parçasıdır. Bir alt rutin çağrısında değerleri parametrelere ikame etme sürecine daha benzerdir.
Michael Monica Cellio'yu

1
@Michael Fair yeter. Haklısın. Benim hatam. Her neyse, nokta şu ki, sol oku taklit etmeye çalışıyor olsalardı, kullanmazlardı :=, kullanırlardı <-.
Variadicism
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.