Що робить ": ="?


111

Я бачив, як :=використовується в декількох зразках коду, але ніколи з супровідним поясненням. Google не може точно використовувати його використання, не знаючи правильної назви для нього.

Що це робить?


11
Якою мовою?
Бета

4
Ви зазвичай використовуєте, :=коли щось визначаєте, щоб відокремити це від звичайних змінних змін. Про яку мову програмування ми говоримо?
svens

3
PL / SQL призначений для призначення. Але з огляду на іншу мову, ця відповідь не гарантована як правдива - так, для яких мов це був приклад?
Андрій

12
Щоб переглянути Google щось подібне, пропишіть його та додайте до лапок, як-от так: "двокрапка дорівнює"
Intelekshual

3
Я думаю, що Паскаль має цього оператора!

Відповіді:


104

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

У мовах програмування комп'ютером знак рівності зазвичай позначає або булевий оператор для перевірки рівності значень (наприклад, як у Паскаля або Ейфеля), що відповідає використанню символу в математиці, або оператору призначення (наприклад, як на мовах, подібних С) ). Мови, що роблять попередній вибір, часто використовують двокрапку (= =) або ≔ для позначення оператора призначення. Мови, які роблять останній вибір, часто використовують подвійний знак рівності (==) для позначення булевого оператора рівності.

Примітка. Я знайшов це, шукаючиcolon equals operator


58
Як не дивно, ця відповідь зараз знаходиться над Вікіпедією при пошуку colon equals operator.
nighthawk454

6
Якщо ми продовжуємо друкувати colon equals operator, ми працюємо над магією SEO, щоб зробити це найкращим результатом
ATLUS

47

Це оператор присвоєння в Pascal і часто використовується в доказів і псевдокодах. Це те саме, що і =в мовах С-діалект.

Історично документи з інформатики використовувались =для порівняння рівності та для виконання завдань. Паскаль використовувався :=для важкої введення стрілки ліворуч. C пішов в іншому напрямку і замість цього визначився з операторами =і ==.


25

Статично набраною мовою Go := є ініціалізація та призначення в один крок. Це робиться для того, щоб створити подібні до інтерпретації створення змінних мовою, що склалася.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42



0

Це старий (паскальний) синтаксис для оператора призначення. Він би використовувався так:

a := 45;

Це може бути і в інших мовах, ймовірно, у подібному використанні.


0

У багатьох книгах CS він використовується як оператор присвоєння для відмежування від оператора рівності =. Однак у багатьох мовах високого рівня присвоєння є =рівності ==.


0

Це як стрілка, не використовуючи символ менше ніж <= так, як усі, хто вже сказав оператор "призначення". Надання ясності тому, що встановлюється, де на відміну від логічного оператора еквівалентності.

У математиці це як рівне, але A: = B означає, що A визначено як B, потрійний брусок рівний можна сказати, що він подібний і рівний за визначенням, але не завжди те саме.

У будь-якому разі я вказую на ці інші посилання, які, мабуть, були у свідомості тих, хто його винайшов, але насправді просто площину дорівнює і менше, що рівняння були взяті (або, можливо, їх легко переплутати з = <), і було потрібно щось нове для визначення призначення що мало сенс.

Історичні довідки: Я вперше побачив це в SmallTalk оригінальній мові об’єктів, з яких SJ Apple лише скопіювала частину Windows та BG від Microsoft зводила з них далі (одна нитка). Врешті-решт, SJ у NeXT взяв другий важливіший урок від Xerox PARC в, який став Об'єктивною 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 = це на 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 потрапляє до символу стрілки ліворуч.

Дивна умова використання рівних для призначення та подвійних рівних для порівняння була розпочата з мовою С.

У Пролозі немає різниці між присвоєнням та тестом рівності.


Якби вони хотіли, щоб це було поруч із стрілкою ліворуч, вони могли б використати так, <-як це зробив Haskell. Вони не намагалися наблизитися до стрілки ліворуч :=, вони використовували математичну ", визначається як" оператор: mathworld.wolfram.com/Defined.html
Варіадизм

1
Попередження педанта: <- у Haskell не присвоєння. Haskell не має деструктивного призначення у вигляді Паскаля, Ада тощо. <- це частина синтаксису донотації для заміни параметрів. Це більш аналогічно процесу заміщення значень параметрів у виклику підпрограми.
Майкл відновить Моніку Селіо

1
@Michael Ярмарок досить. Ти маєш рацію. Моє ліжко. Так чи інакше, справа залишається, що якби вони намагалися імітувати ліву стрілку, вони б не використали :=, а використали б <-.
Варіадизм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.