“: =” ทำอะไร?


111

ฉันเคยเห็น:=ใช้ในตัวอย่างโค้ดหลายรายการ แต่ไม่เคยมีคำอธิบายประกอบ เป็นไปไม่ได้เลยที่ Google จะใช้โดยไม่ทราบชื่อที่ถูกต้อง

มันทำอะไร?


11
ในภาษาอะไร?
Beta

4
โดยปกติคุณใช้:=เมื่อคุณกำหนดบางสิ่งเพื่อแยกมันออกจากการเปลี่ยนแปลงตัวแปรปกติ .. เรากำลังพูดถึงภาษาโปรแกรมอะไร?
เวน

3
PL / SQL มีไว้สำหรับการกำหนด แต่ด้วยภาษาที่แตกต่างกันคำตอบนั้นไม่ได้รับประกันว่าจะเป็นจริง - ภาษาใดเป็นตัวอย่าง?
Andrew

12
หากต้องการใช้ Google ให้สะกดคำและใส่เครื่องหมายอัญประกาศดังนี้: "โคลอนเท่ากับ"
Intelekshual

3
ฉันคิดว่า Pascal มีตัวดำเนินการนี้!

คำตอบ:


104

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

ในภาษาโปรแกรมคอมพิวเตอร์โดยทั่วไปแล้วเครื่องหมายเท่ากับหมายถึงตัวดำเนินการบูลีนเพื่อทดสอบความเท่าเทียมกันของค่า (เช่นในภาษาปาสคาลหรือไอเฟล) ซึ่งสอดคล้องกับการใช้สัญลักษณ์ในคณิตศาสตร์หรือตัวดำเนินการกำหนด (เช่นในภาษาคล้ายซี ) ภาษาที่เลือกใช้ในอดีตมักใช้เครื่องหมายจุดคู่ (: =) หรือ≔เพื่อแสดงถึงตัวดำเนินการกำหนด ภาษาที่ใช้ตัวเลือกหลังมักใช้เครื่องหมายเท่ากับคู่ (==) เพื่อแสดงถึงตัวดำเนินการความเท่าเทียมกันของบูลีน

หมายเหตุ:ฉันพบสิ่งนี้โดยการค้นหาcolon equals operator


58
colon equals operatorกระแทกแดกดันคำตอบนี้อยู่ในขณะนี้ด้านบนวิกิพีเดียเมื่อค้นหา
nighthawk454

6
หากเราพิมพ์ไปเรื่อยcolon equals operatorๆ เราใช้ความมหัศจรรย์ใน SEO ของ Google เพื่อให้สิ่งนี้เป็นผลลัพธ์อันดับต้น ๆ
ATLUS

47

เป็นตัวดำเนินการกำหนดในภาษาปาสคาลและมักใช้ในการพิสูจน์และรหัสหลอก มันเหมือนกับ=ภาษาซี - ถิ่น

ในอดีตเอกสารทางวิทยาการคอมพิวเตอร์ใช้=สำหรับการเปรียบเทียบความเท่าเทียมกันและสำหรับการมอบหมายงาน Pascal เคย:=ยืนอยู่ในลูกศรซ้ายที่ยากต่อการพิมพ์ C ไปในทิศทางที่แตกต่างและตัดสินใจเลือกตัวดำเนินการ=และ==แทน


25

ในภาษาที่พิมพ์แบบคงที่Go :=คือการเริ่มต้นและการกำหนดในขั้นตอนเดียว ทำเพื่ออนุญาตให้มีการสร้างตัวแปรที่เหมือนการตีความในภาษาคอมไพล์

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42

5

บางภาษาใช้:=เพื่อทำหน้าที่เป็นตัวดำเนินการกำหนด


@Pacerier ดูโพสต์นี้stackoverflow.com/questions/7462322/…ว่าทำไมคำตอบสำหรับคำถามของคุณจึงเป็นได้ทั้ง "ใช่" และ "ไม่ใช่"
TigOldBitties

@TigOldBitties ดี gotcha จากเออร์วินลงไปที่นั่น
Pacerier

4

การตีความจากนอกโลกของภาษาโปรแกรมมาจากWolfram Mathworldและคณะ:

ถ้า A และ B เท่ากันตามนิยาม (กล่าวคือ A ถูกกำหนดให้เป็น B) สิ่งนี้จะถูกเขียนในเชิงสัญลักษณ์ว่า A = B, A: = B หรือบางครั้งA≜B

http://mathworld.wolfram.com/Defined.html

/math/182101/app suitable-notation-equiv- versus


0

นี่เป็นไวยากรณ์เก่า (pascal) สำหรับตัวดำเนินการกำหนด จะใช้ดังนี้:

a := 45;

อาจเป็นภาษาอื่นเช่นกันอาจใช้ในลักษณะเดียวกัน


0

=ในหนังสือจำนวนมากลูกค้าก็ใช้เป็นตัวดำเนินการกำหนดความแตกต่างจากผู้ประกอบการความเสมอภาค ในจำนวนมากของภาษาในระดับสูงแม้ว่าจะได้รับมอบหมายเป็นและความเท่าเทียมกันคือ===


0

มันเหมือนกับลูกศรโดยไม่ต้องใช้สัญลักษณ์น้อยกว่า <= เหมือนที่ทุกคนพูดไปแล้วโอเปอเรเตอร์ "มอบหมาย" นำความชัดเจนไปสู่สิ่งที่ถูกกำหนดให้ตรงข้ามกับตัวดำเนินการเชิงตรรกะของความเท่าเทียมกัน

ในวิชาคณิตศาสตร์มันเหมือนเท่ากับ แต่ A: = B หมายถึง A ถูกกำหนดให้เป็น B สามารถใช้แท่งสามเท่าเพื่อบอกว่ามันเหมือนและเท่ากันตามนิยาม แต่ไม่ใช่สิ่งเดียวกันเสมอไป

อย่างไรก็ตามฉันชี้ไปที่การอ้างอิงอื่น ๆ เหล่านี้ซึ่งอาจอยู่ในความคิดของผู้ที่คิดค้นมันขึ้นมา แต่จริงๆแล้วเครื่องบินนั้นเท่ากันและน้อยกว่าที่เท่ากับถูกนำมา (หรืออาจสับสนได้ง่ายกับ = <) และจำเป็นต้องมีสิ่งใหม่ในการกำหนดการมอบหมายและ ที่เข้าท่าที่สุด

การอ้างอิงทางประวัติศาสตร์: ฉันเห็นสิ่งนี้เป็นครั้งแรกใน SmallTalk ภาษาออบเจ็กต์ดั้งเดิมซึ่ง SJ ของ Apple คัดลอกเฉพาะส่วน Windows ของและ BG ของ Microsoft ที่รดน้ำจากพวกเขาเพิ่มเติม (เธรดเดี่ยว) ในที่สุด SJ ใน NeXT ก็ได้บทเรียนที่สำคัญกว่าครั้งที่สองจาก Xerox PARC ในซึ่งกลายมาเป็น Objective C

อย่างไรก็ตามพวกเขาเพิ่งใช้ตัวดำเนินการดูดกลืนลำไส้ใหญ่จาก ALGOL 1958 ซึ่งต่อมาได้รับความนิยมจาก Pascal

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

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

โดยทั่วไป Assignments จะอนุญาตให้ตัวแปรเก็บค่าที่แตกต่างกันในช่วงเวลาที่ต่างกันในช่วงอายุและขอบเขต อย่างไรก็ตามบางภาษา (ใช้งานได้อย่างเคร่งครัดเป็นหลัก) ไม่อนุญาตให้มีการกำหนดใหม่แบบ "ทำลายล้าง" เนื่องจากอาจบ่งบอกถึงการเปลี่ยนแปลงของรัฐที่ไม่ใช่ท้องถิ่น จุดประสงค์คือเพื่อบังคับใช้ความโปร่งใสในการอ้างอิงกล่าวคือฟังก์ชันที่ไม่ขึ้นอยู่กับสถานะของตัวแปรบางตัว แต่ให้ผลลัพธ์เดียวกันสำหรับชุดอินพุตพาราเมตริกที่กำหนด ณ เวลาใดเวลาหนึ่ง

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


0

สำหรับ VB.net

ตัวสร้าง (สำหรับกรณีนี้ Me = this ใน 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

Colon-equals ถูกใช้ใน Algol และลูกหลานของมันเช่น Pascal และ Ada เพราะมันใกล้เคียงกับที่ ASCII ได้รับกับสัญลักษณ์ลูกศรซ้าย

แบบแผนแปลก ๆ ในการใช้การเท่ากับสำหรับการกำหนดและการเท่ากับสองครั้งสำหรับการเปรียบเทียบเริ่มต้นด้วยภาษาซี

ใน Prolog ไม่มีความแตกต่างระหว่างการกำหนดและการทดสอบความเท่าเทียมกัน


หากพวกเขาต้องการให้มันอยู่ใกล้กับลูกศรซ้ายพวกเขาก็สามารถใช้ได้<-เหมือนที่ Haskell ทำ พวกเขาไม่ได้พยายามเข้าใกล้ลูกศรซ้าย:=โดยใช้คำว่า 'ถูกกำหนดให้เป็น' ทางคณิตศาสตร์ 'เป็นตัวดำเนินการ: mathworld.wolfram.com/Defined.html
Variadicism

1
Pedant alert: <- ใน Haskell ไม่ใช่การมอบหมาย Haskell ไม่มีการกำหนดทำลายในลักษณะของ Pascal, Ada เป็นต้น <- เป็นส่วนหนึ่งของไวยากรณ์ do-notation สำหรับการแทนที่พารามิเตอร์ มันคล้ายคลึงกับกระบวนการแทนที่ค่าเป็นพารามิเตอร์ในการเรียกรูทีนย่อยมากกว่า
Michael ฟื้นฟู Monica Cellio เมื่อ

1
@ ไมเคิลพอใช้. คุณถูก. ความผิดฉันเอง. อย่างไรก็ตามยังคงเป็นประเด็นที่ว่าถ้าพวกเขากำลังพยายามที่จะเลียนแบบลูกศรซ้ายพวกเขาจะไม่ได้ใช้พวกเขาจะได้ใช้:= <-
Variadicism
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.