跳转到内容

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。此符号用于指示列表和数组的结束;它也指示“未创建”对象。


启动 · 组合基本类型

华夏公益教科书