Language agnostic 什么是类型?

Language agnostic 什么是类型?,language-agnostic,types,Language Agnostic,Types,一个新问题/+: 在编程中,我们经常遇到Type这个词它应该传达什么意思,什么时候不应该使用 回答这个问题有很多方法,每种方法都适用于某些模型,但不适用于其他模型。我最喜欢的一般定义是,类型是世界上所有值的子集(例如,“正整数”类型包括值1,但不包括值“堆栈溢出”)。类型可以明显重叠(1可以是整数或正整数类型)。这个定义给出了“更大”(更具包容性)和“更小”类型的良好直观感觉,这有助于理解协方差和反方差。我一直认为“类型定义了数据如何存储在内存中以及可以对其执行的操作。” 如果您考虑一个带有局部

一个新问题/+:

在编程中,我们经常遇到Type这个词

它应该传达什么意思,什么时候不应该使用

回答这个问题有很多方法,每种方法都适用于某些模型,但不适用于其他模型。我最喜欢的一般定义是,类型是世界上所有值的子集(例如,“正整数”类型包括值1,但不包括值“堆栈溢出”)。类型可以明显重叠(1可以是整数或正整数类型)。这个定义给出了“更大”(更具包容性)和“更小”类型的良好直观感觉,这有助于理解协方差和反方差。

我一直认为“类型定义了数据如何存储在内存中以及可以对其执行的操作。”


如果您考虑一个带有局部变量和方法的类,这是有意义的。实例变量定义了为新实例分配内存的方式,公共方法描述了可在该类实例上执行的操作的契约。

数据类型。e、 g.int、bool、float、char、string(不同语言的名称不同)

类型是数据类型的缩写。这些可分为两个基本类别:本机和用户定义。数据类型描述变量中可以保存的数据类型以及可以对该数据执行的操作

本机数据类型已在该语言中定义。通常包括整数、浮点、布尔、字符、字符串或类似的名称。不同的语言将有不同的本机数据类型集。例如,有些语言没有布尔值。其他语言没有本机字符串类型


自定义数据类型是您定义的数据类型。您可以定义用于存储任何类型的信息的数据类型,以及作用于这些值的运算符。这些可以被视为类或结构。

就数据类型而言,它是数据存储在内存中的格式,并传递可以对数据执行的操作


例如,“无符号整数”是一种只能存储正整实数(即0、1、2、3…)的数据类型,由于分配给无符号整数的内存有限,它通常最多只能存储一个特定的数字。

@divo说得很好,但我将尝试总结一下:

类型是一组被赋予语义的数据(它甚至可以由其他类型组成)。这很重要——类型是语义的定义。这种类型与那种类型不同,因为我是这么说的。类型的语义定义了如何使用它,可以对它执行什么操作,诸如此类的事情

在最低形式上,类型只是一组位的编码。例如,一个整数(
int
,在许多语言中)是(现在通常是)32位的数据,以形式编码
float
s是在中编码的32或64位
char
s是用ASCII或/UTF16编码的8或16位(通常为16位)。字符串是一个字符数组。等等


复杂类型(大多数人看到/听到“类型”一词时都会想到)由一种或多种其他类型组成。在大多数语言中,类型可以定义为另一种类型的别名,也可以定义为数据结构或类

非正式地说,类型用于命名具有类似特征的一类对象,如家具类型的“椅子”。椅子通常是用来坐的,因此有一个平坦的水平空间。椅子通常有四条腿,但并不总是这样。椅子有某种颜色或一组颜色。等等

所以,如果我告诉你我有一把椅子,你对我所指的物体了解很多

进一步类推,椅子具有功能(您可以坐在椅子上)和属性(腿的数量、颜色)。此外,椅子属性的常见配置也可以命名为子类型(或子类),例如凳子是没有靠背的三条腿椅子


类型是描述计算机对象的简写,因此不需要为每个对象指定所有属性和操作(方法)。通过声明某个对象具有某个类型,程序员(和计算机)基于该类型假定了公共性,从而使编程过程更便宜/更好/更快。

数据只不过是位的集合。类型告诉您这些位代表什么,比如int、char、Boolean。

从一个刚开始编程的人的角度来看,您可以认为类型的目的是限制特定变量中可以存储的信息。例如,(忽略奇数环境),在C中:

  • 字符是一个8位的值,可以表示从-128到127的数字
  • 无符号short
    是一个16位的值,可以表示0到65535之间的数字

值得注意的是,并非所有语言都以相同的方式处理键入。严格限制基于类型的变量中可以存储的值的语言被认为是强类型的。非强类型语言的一个例子是Perl—如果您定义,Perl将发挥神奇的作用,并根据上下文将此值视为字符串或数字。

类型是类或对象(类实例)的“描述”的名称

在.NET中,类型会告诉您诸如类的名称、字段、属性、方法、所在位置等信息。它还可能导致诸如它所在的程序集(DLL)以及它所在的目录等信息

类型非常重要,因为编译器知道在编译时可以和不能对对象执行哪些操作。这大大简化了开发,确保了问题能够更快地被提出,并且开发人员不太可能用错误的对象做错误的事情

一些这样的例子