Как мне визуализировать «тип» и как оно соотносится с «значением»?
Действительно просто.
Вы знаете, что такое набор в математике.
Википедия
В математике множество - это совокупность отдельных объектов, рассматриваемых как отдельный объект.
Наборы имеют имена, такие как Color
, People
и т. Д., А Типы имеют имена, такие как Color
, People
и т. Д.
Наборы имеют значения, а Типы имеют значения.
Набор Colors
Тип: Color
Значения: Blue
, Red
Набор Integers
Тип: Integer
Значения: 0
, 1
Метафора
People think of sets but programmers think of types.
или эта картинка в комиксе Dilbert
You say Set I think Type.
I say Type you think Set.
Что-нибудь еще, что мне нужно добавить?
РЕДАКТИРОВАТЬ
Из комментария.
Объясните, что в контексте каждого из 6метафоры, которые я видел, люди описывают тип.
Понятие типа не является чем-то интуитивно понятным, поэтому помогает аналогия с множеством.Использование набора в качестве аналогии является чрезмерным упрощением, поэтому, пройдя по шести метафорам, он будет различать, где набор и тип различаются.
- «Тип» - это пустая оболочка свойств, а «Значение 'это то, что заполняет его.
Когда вы впервые даете тип или задаете имя, оно пустое.Затем вы добавляете значения к нему, чтобы заполнить его.Может не иметь значений и быть действительным.
«Тип» - это фабрика, из которой создаются «значения».
«Тип» может использоваться для создания новых значений, но набор не создает новые значения.В математике они используют set build notation .
«Тип» - это план фабрики, которая создает «значения»
. Для этого слова план больше относится к абстрактному типу .Я не знаю подобных средств с наборами, отличными от set build notation .
«Тип» - это книга правил, рассказывающая, на что способно «значение».
В Объектно-ориентированном программировании типы имеют методы.Если бы собака была типом, то у нее был бы метод запуска.Затем вы можете сказать собаке бежать.
Если чисто функциональное программирование, вы можете создавать операторы, независимые от типа, а затем заставлять оператор работать со значением.
Устанавливает, AFAIK, методов нет, но математика имеет операторы , которые работают со значениями, и операторы ограничены наборами, с которыми они работают.Таким образом, в программировании операторы работают над значениями, а в математических операторах работают над значениями.
«Тип» - это идентификационная метка для «значения», в которое уже встроены встроенные свойства.
Когда вы присваиваете значение без типа, это просто значение, но как только выскажем, какого типа это значение, тогда все свойства и методы этого типа могут использоваться с этим значением.
Что касается множеств, если я скажу 5, то что это?Целое число, натуральное число, действительное число, часть воображаемого числа, длина и т. Д. Если я скажу, что 5 имеет целочисленное значение типа, то вы знаете, что вы можете сложить, вычесть, и преемник 5 равен 6, а предшественник5 - 4. Если я говорю, что 5 имеет тип «простое», то вы знаете, что преемник 5 - 7, а предшественник 5 - 3.
«Тип» - это организационная палата, в которой «ценности» находятся до того, как их вызывают в программу.
LOL.На самом деле кто-то написал это.Такой упрощенный взгляд.Если вы думаете, в конкретном мире, то значение будет конкретной сущностью, а камера - конкретным контейнером.В этом смысле вы должны физически вытащить его из контейнера, чтобы использовать его.В обоих типах и наборах вам не нужно перемещать их, чтобы использовать их;они являются абстрактными, и вы ссылаетесь на них или идентифицируете по значению.
Также как прилагательное «Типизированный».Это мне очень поможет.
В Python переменная не имеет типа ( duck typing ), пока вы не поместите значение в переменную, тогда переменная получит связанный с ней тип.Помещение значения в переменную - это глагол, поэтому существительное становится глаголом, таким образом, «набирается», а в X печатается как целое число.
Я никогда не слышал о термине «набор»"используется таким образом.
Я использовал его только потому, что это слишком упрощает, чтобы ваши исцеления копались в чем-то, что вы можете связать.Когда я думаю о типах, это сильно отличается от множества.