Answers:
我认为它们不可互换。它们经常相似,但确实存在差异,并且似乎主要在于它们之间的对比以及上下文中的相关内容。
标量通常与化合物(例如数组,映射,集合,结构等)形成对比。标量是“单个”值-整数,布尔值,也许是字符串-而化合物由多个标量组成(并且可能是对标量的引用)其他化合物)。“标量”用于上下文之间的相关区分是单个/简单/原子值与复合值之间的情况。
但是,原始类型与引用类型形成对比,并且在相关区别是“这是直接值还是包含真实值的对象的引用?”时使用,例如Java的原始类型与引用。 。我认为这是比标量/化合物低一些的区分,但不是完全一样。
它实际上取决于上下文(并且经常讨论什么语言族)。举一个可能是病态的例子:字符串。在C语言中,字符串是化合物(字符数组),而在Perl中,字符串是标量。在Java中,字符串是对象(或引用类型)。在Python中,一切(从概念上来说)都是对象/引用类型,包括字符串(和数字)。
这些术语有很多混乱和误用。通常一个用来表示另一个。这些术语实际上是什么意思。
“本机”是指语言内置的类型,而不是由库(甚至是标准库)提供的,而不管它们是如何实现的。Perl字符串是Perl语言的一部分,因此它们是Perl中的本地语言。C使用库通过指向char的指针提供了字符串语义,因此,指向char的指针是本机的,而字符串不是。
“原子”是指不能再分解的类型。它与“ composite”相反。复合材料可以分解为原子值或其他复合材料的组合。本机整数和浮点数是原子的。分数,复数,容器/集合和字符串是复合的。
“标量”(Scalar) -这是一个使大多数人感到困惑的值-表示可以表示标度的值(因此得名),例如大小,体积,计数等。整数,浮点数和分数是标量。复数,布尔值和字符串不是标量。原子的事物不一定是标量的,标量的事物不一定是原子的。标量可以是本地的,也可以由库提供。
一些类型具有奇数分类。通常以数字或整数数组形式实现的BigNumber类型是标量,但从技术上讲它们不是原子的。如果实现被隐藏并且您无法访问内部组件,则它们看起来可能是原子的。但是组件只是隐藏的,因此原子性只是一种幻想。它们几乎总是在库中提供的,因此它们不是本地的,但可以是。例如,在Mathematica编程语言中,大量数字是本机的,并且由于Mathematica程序无法将其分解为构建基块,因此在这种情况下它们也是原子的,尽管事实是它们是根据封面(您不再是Mathematica语言的世界)。
这些定义与所使用的语言无关。
简而言之,似乎“标量”类型是指单个项目,而不是复合或集合。因此,标量既包含原始值,也包含枚举值之类的东西。
http://ee.hawaii.edu/~tep/EE160/Book/chap5/section2.1.3.html
也许“标量”一词可能是对C的回溯:
标量是原始对象,包含单个值并且不由其他C ++对象组成
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1995/N0774.pdf
我很好奇这是否指的是这些项目是否具有“规模”的价值?-如数数。
我喜欢Scott Langeberg的答案,因为它简洁明了,并有权威链接。如果可以的话,我会投票表决斯科特的答案。
我想可以将“原始”数据类型视为主要数据类型,以便从主要数据类型派生辅助数据类型。派生是通过合并,例如C ++结构。可以使用结构来组合数据类型(例如and和int和char)以获取辅助数据类型。结构定义的数据类型始终是辅助数据类型。主数据类型不是从任何东西派生的,而是它们是编程语言中给定的。
我有一个与原语相似的术语,即原义。该并行是“正则表达式”。我认为术语“常规”可以理解为“调节”。因此,您有一个调节搜索的表达式。
标量词源(http://www.etymonline.com/index.php?allowed_in_frame=0&search=scalar&searchmode=none)类似于梯形。我认为这与编程有关的方式是,梯子只有一个维度:从梯子的末端开始有多少梯级。标量数据类型仅具有一个维度,因此由单个值表示。
我认为在用法上,原始和标量是可以互换的。是否有非标量的图元或非标量的标量的示例?
尽管可以互换,但是图元是指数据类型是其他数据类型的基本构建块,而图元不是由其他数据类型组成的。
标量是指其具有单个值。标量与数学向量形成对比。一个向量不能用单个值表示,因为(以一种向量为例)需要一个值来表示向量的方向,而另一个值则需要用来表示向量的大小。
参考链接:http : //whatis.techtarget.com/definition/primitive http://en.wikipedia.org/wiki/Primitive_data_type