Sway 参考手册/基本类型
Sway 通过分析代码的含义或值来运作。这适用于从最小的代码片段到最大的程序。找出代码含义的过程被称为 *评估*。
自身值为其自身的那些东西被称为基本类型。Sway 的基本类型可以分为以下类型:整数、实数、字符串和符号。
Sway(或更准确地说,Sway 解释器)对基本类型做出响应,给出值类型加上值本身。
以下是每种类型的示例
sway> 3 INTEGER: 3 sway> -4.9 REAL_NUMBER: -4.9 sway> "hello" STRING: "hello" sway> :age SYMBOL: :age
让我们更详细地考察这四种类型。
整数是没有任何小数部分的数字。整数的例子有
sway> 3; INTEGER: 3 sway> -5; INTEGER: -5 sway> 0; INTEGER: 0
整数必须以数字或负号开头。初始负号必须紧跟一个数字。
实数是有小数部分的数字(即使小数部分为零!)。实数的例子有
sway> 3.2; REAL: 3.20000000000 sway> 4.0; REAL: 4.00000000000 sway> 5.; REAL: 5.00000000000 sway> 0.3; REAL: 0.30000000000 sway> .3; REAL: 0.30000000000 sway> 3.0e-4; REAL: 0.00030000000 sway> 3.0e4; REAL: 30000.0000000 sway> .000000987654321 REAL: 9.8765432e-07
实数必须以数字、负号或小数点开头。初始负号必须紧跟一个数字或小数点。初始小数点必须紧跟一个数字。Sway 接受以科学记数法表示的实数。例如, 将被输入为 3.0e-11。'e' 代表指数,10 是理解的,所以 e-11 表示将 'e' 之前的任何东西乘以 .
Sway 解释器只显示六到十一有效数字,具体取决于数字的大小,所以 1.234567898765432 会显示为
sway> 1.234567898765432; REAL: 1.2345678988
不要被骗。虽然结果看起来像 1.2345678988,但它不是。以下代码测试这两个数字是否相等
sway> 1.234567898765432 == 1.2345678988; SYMBOL: :false
大于 小于 的数字将以科学记数法显示。
要显示更多(或更少)有效数字,可以使用 *fmt* 函数。以下是显示小数点后 15 位数字的方法
sway> fmt("%.15f",1.234567898765432); STRING: 1.234567898765432
*fmt* 函数使用与 C printf 函数相同的格式代码。
不要尝试显示超过 16 位有效数字;最不重要的数字将不准确。
字符串是由双引号分隔的字符序列
sway> "hello, world!"; STRING: "hello, world!" sway> "x\nx"; STRING: "x\nx" sway> "\"z\""; STRING: "\"z\"" sway> ""; STRING: ""
字符串中的字符可以使用反斜杠字符进行 *转义*,这会改变某些字符的含义。例如,字符串中的字符 'n' 指的是字母 'n',而字符序列 '\n' 指的是 *换行符*。反斜杠也会改变字母 't' 的含义,将其转换为制表符 '\t'。当其他字符被转义时,它们的含义不会改变。因此 '\z' 等同于 'z'。要在字符串中包含反斜杠字符,用反斜杠对其进行转义,'\\'。请注意,Sway 在被要求给出包含换行符和制表符的字符串的值时,会将其显示为转义字符。然而,当字符串中的换行符和制表符在程序中被打印时,它们分别以实际的换行符和制表符形式显示。双引号可以通过用反斜杠转义它们来嵌入到字符串中。两个双引号之间没有任何字符的字符串被称为空字符串。
与某些语言不同,Sway 中没有字符类型。例如,单个字符 'a' 被输入为字符串 "a"。
Sway 符号是一些以冒号开头的字符的集合
sway> :abc; SYMBOL: :abc sway> :a+b; SYMBOL: :a+b
当符号在程序中被打印时,冒号将从输出中省略。符号可以包含除括号、大括号、分号和逗号之外的任何可打印字符。冒号标志着符号的开始,而空白字符(换行符、制表符和空格)以及禁止的字符标志着符号的结束。正如我们将在后面看到的那样,符号对于设置符号常量和传递消息很有用。
Sway 中有一些特殊符号,其中两个是:true和:false。这些符号被称为 *布尔* 值,用于指导程序的流程。布尔这个术语来源于乔治·布尔的姓氏,他在 1854 年的论文 "An Investigation of the Laws of Thought, on which are founded the Mathematical Theories of Logic and Probabilities" 中为现代数字计算机奠定了基石之一。所谓的布尔逻辑或布尔代数关注的是组合真值(即真或假)的规则。正如我们将看到的,了解这些规则对于使 Sway 程序正常运行至关重要。特别是,布尔表达式将用于控制条件和循环。
另一个特殊符号是:null。此符号用于指示列表和数组的结束;它也指示“未创建”对象。