“: =” Làm gì?


111

Tôi đã thấy :=được sử dụng trong một số mẫu mã, nhưng không bao giờ có giải thích kèm theo. Không thể google chính xác công dụng của nó mà không biết tên thích hợp của nó.

Nó làm gì?


11
Bằng ngôn ngữ nào?
Beta vào

4
Bạn thường sử dụng :=khi bạn định nghĩa một cái gì đó, để tách nó khỏi những thay đổi biến thường xuyên .. Chúng ta đang nói về ngôn ngữ lập trình nào?
svens

3
PL / SQL nó là để gán. Nhưng với một ngôn ngữ khác, câu trả lời đó không chắc chắn là đúng - vậy ví dụ ở ngôn ngữ nào?
Andrew

12
Để google một cái gì đó như thế này, đánh vần nó ra và đặt nó bên trong dấu ngoặc kép, như vậy: "ruột kết bằng"
Intelekshual

3
Tôi nghĩ Pascal có toán tử này!

Câu trả lời:


104

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

Trong các ngôn ngữ lập trình máy tính, dấu bằng thường biểu thị một toán tử boolean để kiểm tra tính bình đẳng của các giá trị (ví dụ như trong Pascal hoặc Eiffel), phù hợp với cách sử dụng của ký hiệu trong toán học hoặc một toán tử gán (ví dụ như trong các ngôn ngữ giống C ). Các ngôn ngữ đưa ra lựa chọn trước đây thường sử dụng dấu hai chấm bằng (: =) hoặc ≔ để biểu thị toán tử gán của chúng. Các ngôn ngữ đưa ra lựa chọn thứ hai thường sử dụng dấu bằng kép (==) để biểu thị toán tử bình đẳng boolean của chúng.

Lưu ý: Tôi đã tìm thấy điều này bằng cách tìm kiếmcolon equals operator


58
Trớ trêu thay, câu trả lời này hiện ở trên Wikipedia khi tìm kiếm colon equals operator.
nighthawk454

6
Nếu chúng tôi tiếp tục nhập colon equals operator, chúng tôi sẽ làm việc kỳ diệu trên SEO của Google để biến điều này trở thành kết quả hàng đầu
ATLUS

47

Đó là toán tử gán trong Pascal và thường được sử dụng trong chứng minh và mã giả. Nó cũng giống như =trong các ngôn ngữ phương ngữ C.

Trong lịch sử, các bài báo khoa học máy tính được sử dụng =để so sánh bình đẳng và cho các bài tập. Pascal đã từng :=đứng trước mũi tên trái khó gõ. C đã đi một hướng khác và thay vào đó quyết định về các nhà khai thác ===.


25

Trong ngôn ngữ gõ tĩnh, Go := là khởi tạo và gán trong một bước. Nó được thực hiện để cho phép tạo các biến giống như thông dịch trong một ngôn ngữ biên dịch.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42


4

Một cách giải thích khác từ bên ngoài thế giới ngôn ngữ lập trình đến từ Wolfram Mathworld , et al:

Nếu A và B bằng nhau theo định nghĩa (tức là A được định nghĩa là B), thì điều này được viết một cách ký hiệu là A = B, A: = B, hoặc đôi khi là A≜B.

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

/math/182101/app phù hợp- notation-equiv- versus


0

Đây là cú pháp cũ (pascal) cho toán tử gán. Nó sẽ được sử dụng như vậy:

a := 45;

Nó cũng có thể ở các ngôn ngữ khác, có thể được sử dụng tương tự.


0

Trong rất nhiều sách CS, nó được sử dụng làm toán tử gán, để phân biệt với toán tử bình đẳng =. Tuy nhiên, trong nhiều ngôn ngữ cấp cao, phép gán là =và bình đẳng là ==.


0

Nó giống như một mũi tên mà không sử dụng ký hiệu nhỏ hơn <=, giống như mọi người đã nói toán tử "gán". Mang lại sự rõ ràng cho những gì đang được đặt ở vị trí trái ngược với toán tử logic của sự tương đương.

Trong Toán học, nó giống như dấu bằng nhưng A: = B có nghĩa là A được định nghĩa là B, một thanh ba dấu bằng có thể được sử dụng để nói rằng nó giống nhau và bằng nhau theo định nghĩa nhưng không phải lúc nào cũng giống nhau.

Dù sao thì tôi cũng chỉ ra những tham chiếu khác này mà có lẽ đã nằm trong tâm trí của những người đã phát minh ra nó, nhưng nó thực sự chỉ là mặt phẳng bằng và ít hơn bằng được lấy (hoặc có thể dễ bị nhầm lẫn với = <) và cần phải có một cái gì đó mới để xác định phép gán và điều đó có ý nghĩa nhất.

Tài liệu tham khảo lịch sử: Lần đầu tiên tôi thấy điều này trong SmallTalk là Ngôn ngữ đối tượng ban đầu, trong đó SJ của Apple chỉ sao chép phần Windows của và BG của Microsoft đã tiếp thu chúng từ chúng (luồng đơn). Cuối cùng thì SJ trong NeXT đã học được bài học quan trọng thứ hai từ Xerox PARC, bài học trở thành Mục tiêu C.

Dù sao thì họ cũng chỉ lấy toán tử giả định dấu hai chấm từ ALGOL 1958 mà sau này được Pascal phổ biến

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

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

Các phép gán thường cho phép một biến giữ các giá trị khác nhau tại các thời điểm khác nhau trong vòng đời và phạm vi của nó. Tuy nhiên, một số ngôn ngữ (chủ yếu là đúng chức năng) không cho phép kiểu gán lại "phá hoại" như vậy, vì nó có thể ngụ ý những thay đổi về trạng thái không thuộc địa phương. Mục đích là để thực thi tính minh bạch tham chiếu, tức là các hàm không phụ thuộc vào trạng thái của (các) biến số, nhưng tạo ra cùng kết quả cho một tập hợp đầu vào tham số nhất định tại bất kỳ thời điểm nào.

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


0

Đối với VB.net,

một hàm tạo (đối với trường hợp này, Me = this trong Java):

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

khi bạn tạo đối tượng đó:

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

Khi đó, không phụ thuộc vào thứ tự của các tham số, đối tượng ABC đó có A = 2, B = 3, C = 1

Vì vậy, bạn, thực hành rất tốt để người khác đọc mã của bạn một cách hiệu quả


-1

Dấu hai chấm đã được sử dụng trong Algol và các hậu duệ của nó như Pascal và Ada vì nó gần giống như ASCII với biểu tượng mũi tên trái.

Quy ước kỳ lạ về việc sử dụng dấu bằng để gán và dấu bằng kép để so sánh đã được bắt đầu với ngôn ngữ C.

Trong Prolog, không có sự phân biệt giữa bài tập và bài kiểm tra bình đẳng.


Nếu họ muốn nó gần với mũi tên bên trái, họ có thể sử dụng <-như Haskell đã làm. Họ đã không cố gắng để có được gần với mũi tên trái với :=, họ đã sử dụng toán học 'được định nghĩa là' điều hành: mathworld.wolfram.com/Defined.html
Variadicism

1
Cảnh báo bàn đạp: <- trong Haskell không phải là nhiệm vụ. Haskell không có phép gán hủy theo cách của Pascal, Ada, v.v. <- là một phần của cú pháp ký hiệu do-notation để thay thế tham số. Nó tương tự hơn với quá trình thay thế các giá trị thành các tham số trong một lệnh gọi chương trình con.
Michael khôi phục Monica Cellio

1
@Michael Đủ công bằng. Bạn đúng. Lỗi của tôi. Dù sao, điểm vẫn là nếu họ cố gắng bắt chước mũi tên trái, họ sẽ không sử dụng :=, họ đã sử dụng <-.
Chủ nghĩa đa dạng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.