我不知道标量的确切含义,但是我试图查看我是否在正确考虑它。标量与数据类型可以是任何类型的任意性有关吗,或者系统不能事先知道数据是什么。

评论

有趣的事实:我最近使用(使用XQuery)的XML平台喜欢调用这些Atomic值。我认为这是密切相关的,为参考/搜索词添加了注释。

#1 楼

术语“标量”来自线性代数,用于将单个数与向量或矩阵区分开。计算中的含义相似。它将单个值(如整数或浮点数)与数据结构(如数组)区分开。这种区别在Perl中非常突出,其中$信号(类似于“ s”)用于表示标量变量,而@信号(类似于“ a”)表示数组。它与元素本身的类型无关。它可以是数字,字符,字符串或对象。所谓的标量,就是其中之一。

评论


这是一个很好的例子,说明同一术语在不同上下文中可能意味着不同的事物。在C或Pascal之类的语言中,标量是指诸如int或char之类的简单“构件”类型,而不是诸如对象之类的结构化类型(即使只有一个)。

–卡莱布
2014年5月6日,3:14

我还要补充一点,除了数组,标量也不是诸如struct或class之类的复合数据结构。区别在于数组是同一类型的多个元素,而结构是任意类型的多个元素。

–user22815
2014年5月6日14:43

同样,字符串可以是非标量值。诸如Perl之类的语言将其视为标量,但是在任何基于C的语言中,我都认为它是数组或对象。

–user22815
2014年5月6日14:44

@Karl我不认识Perl,但是您能说明一下什么是sigil吗?

–极客
2014年5月9日6:51



@Geek,它是放在变量(例如$ variable)之前的符号。参见维基百科页面。

–卡尔·比勒费尔特(Karl Bielefeldt)
2014年5月9日14:28

#2 楼

标量只是一个拥有单个值的变量。为了便于讨论,我们假设标量是单个数字,而不是数字的集合。

例如,SQL查询的结果返回一个数字而不是一个元组,SQLCommand类中的ExecuteScalar()方法也返回一个数字,而不是元组。查询返回的结果集。通常用于检索聚合值,例如COUNT或AVERAGE,新记录的ID或查询处理的记录数。

#3 楼

卡尔·比勒费尔特(Karl Bielefeldt)的一个很好的答案是一个补充的助记符:

一个简单的思考方式是“这可以在一个规模上吗?”

一个整数可以在一个整数上。标度。

固定大小的整数可以标度,例如从-2147483648到2147483647。

实数可以在小数位数上。甚至字符串也可以按比例缩放(我们在排序时使用了这种用法)。

因此称为“标量”。

数据库行不能按比例缩放。复数不能成比例。表示电子邮件的对象不能按比例缩放。数组,向量或矩阵不能成比例。

评论


如果字符串可以缩放,为什么不数组呢? “这可以规模吗?”至少对我而言,没有给出直观的结果。

– VBCPP
2014年5月6日14:21

@VBCPP在{2,1}所在的标度中包含{1,2}的位置在哪里?之前还是之后?现在,可以强制执行命令了,但是没有明确的命令。还请记住,我正在尝试提供一种思考的简单方法(Karl Bielefeldt的回答在给出更精确的IMO答案方面做得很好,我不会尝试改善它,只是提供补充)。也就是说,这里有一个上下文元素。根据上下文,字符串可能会或可能不会被视为标量;在SQL中,标量是有充分的理由的,在C中则不是,也是有充分的理由的。

–琼·汉娜(Jon Hanna)
2014年5月6日15:32

这是错误的。

–没人
2014年5月6日18:49

尽管我认为卡尔·比勒费尔德(Karl Bielefeldt)应该打勾,但我不同意这是“错误的”。这是一种记忆不足,无法发表评论的答案,这是更好的答案。

–琼·汉娜(Jon Hanna)
2014年5月6日18:50



我认为“这是错误的”评论来自这样的想法,即答案没有任何意义,您对@VBCPP的问题的回答也无法回答他的问题。我肯定喜欢助记符的概念,但是您仍然需要解释例如整数在刻度上的含义。最好谈论在电视上放一只猫。

– Turboladen
2015年4月21日在4:01

#4 楼

就像许多计算中的情况一样;这个词的起源与更多的物理性质有关。术语“标量”在计算中相对较旧。这些天的定义不太严格。当您将数据存储在计算机内存中时,该数据可以装入一个地址(1个字节*),也可以不装入一个地址。当它成立时,它被称为标量;当它没有成立时,它被称为复合。主要是因为CPU一次只能处理一个地址/一条数据(= 1字节)。正如@Karl Bielefeldt所说;该术语确实来自代数。

我们将字符串称为字符串,因为它是字符字符串。字符是标量,或者是标量,而字符串是标量。在多个地址中存储1个数据(数据)会使该行有些模糊。这样想:当CPU可以在一条指令中处理数据时,它就是标量。语言。如今,在大多数情况下,整数,浮点数,字符,字符串,布尔值和枚举都是标量。数组,列表,树,对象等不是。例如,以后再使用磁条)表和其他自1944年以来的计算辅助。也就是说,我的记忆已不再是以前的记忆,因此,如果有人可以修改/确认或拒绝我的回答,那将很好。

#5 楼

标量是一个简单的单一数值(例如1、2 / 3、3.14等),通常是整数,不动点或浮点数(单或双),与数组,结构,对象,复数矢量(实数加上虚数或量值加上角度分量),包含多个单个数值的高维向量或矩阵(等)数据类型。

但是请注意也可以展平并以8位字节的计算机内存表示的类也可以表示为一个非常长/大的二进制标量数。图灵使用此技术将整个计算机程序表示为一个标量。

评论


这允许使用诸如非法数字和非法素数之类的概念-“非法”程序的数字表示形式。

–安德鲁(Andrew)
2014年5月6日5:00

标量不必是数字。字符串,布尔值或日期/时间也是标量。

–david.pfx
14年5月6日在6:42

那么,如果我基于几个标量的字段(例如,一个int表示月份,一年表示一天,而一天表示一天)创建日期复杂的类怎么办?

–皮埃尔·阿劳德
2014年5月6日7:57

@ david.pfx:以字符数组形式查看时,字符串不是标量。

– MSalters
2014年5月6日上午10:01

@MSalters:当然,被视为位数组的整数也不是。可以作为单个不可变匿名值存储和检索的任何东西都是标量,大多数语言允许您使用字符串,日期,复数,点等来做到这一点,即使也可以用其他方式查看它们。

–david.pfx
2014年5月6日上午10:59

#6 楼


标量一词源自拉丁词scalaris,它是斯卡拉语的形容词形式(拉丁语为“梯子”)。英语单词“ scale”也来自scala。来源


标量是具有单个值的变量。例如,

标量变量:
假设您试图将各个学生的姓名表示为一组变量。每个单独的变量都是标量变量,如下所示:标量函数:SQL标量函数根据输入值返回单个值。

NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"