基本数据类型¶
引言¶
MirrorQL语言中的基本数据类型,包括整型、浮点型、布尔型以及字符串类型。
针对MirrorQL支持的数据类型,后续会扩展相关的内建函数--也即是系统已经帮用户写好的函数,用户可以直接拿过来使用。
整型¶
简单来说,整型变量用于保存整数,如306。例如:
其中,整型使用int 关键字来标注。
内建操作¶
整型转字符串¶
浮点类型¶
简单来说,而浮点型变量则用于保存浮点数,也就是带小数位的数,如3.14。例如:
其中,浮点类型使用float关键字来标注。
内建操作¶
浮点转字符串¶
字符串类型¶
字符串类型的变量用来存放以双引号开头和结尾的字符序列,即字符串。例如:
let x:str = "hello world"
let y = "hello"
let z:str = "He said, \"Logic clearly dictates that the needs of the many...\""
其中,字符串类型使用str关键字来标注;
MirrorQL 实现中支持字符串中包含相关的转义字符;
常见的转义字符如下:
内建操作¶
正则匹配¶
基本类型str支持正则表达式匹配,对应str类型的成员谓词match。
用法为:字符串.match(str类型的正则表达式)。示例:
欲匹配的正则表达式不一定是字面量,x=="bbb" and "aaa".match(x)也是合法的用法。
拼接¶
str类型可以直接使用+运算符进行拼接。示例:
str类型也可以通过方法cat来进行拼接。示例:
获取长度¶
str类型的成员谓词len用来获取字符串的长度。
用法为字符串.len(),返回一个int。示例:
字符串转整型¶
str类型的成员谓词toInt,将字符串转整型。示例:
字符串转浮点¶
str类型的成员谓词toFloat,将字符串转浮点。示例:
获取子串¶
str类型的成员谓词substr(start, num),获取字串。其中start 表示字串的起始位置, num表示要获取的子串的个数。
示例:
子串截取规则
当给出的截取长度大于实际可以截取的长度时,只会截取实际能截取的长度。例如"abc".substr(1,100)=="bc"。
当给出的起始下标越界时,substr会返回一个空串,并在运行时给出警告。
布尔型¶
布尔型变量用来存放布尔值,即no(假)或者 yes(真)。
为了便于读者理解,这里举例说明:
在上面的代码中,我们定义了一个布尔型变量x,并将其赋值为yes。
其中,布尔类型使用yon关键字标注。
Built-ins¶
MQL包含许多内置谓词。本节定义了所有数据库都包含的许多内置谓词。每个数据库还包括许多本文档中未指定的其他非成员谓词。
本节给出了几个内置谓词表。对于每个谓词,该表给出了每个有谓词的谓词的结果类型以及参数类型的顺序。
每个表还指定了每个谓词的数据库内容中包含哪些有序元组。它通过一个对所包含的元组完全正确的描述来指定这一点。在每个描述中,如果谓词具有结果类型,则“result”是每个元组的最后一个元素。“receiver”是每个元组的第一个元素。“arguments”是每个元组中除结果和接收者之外的所有元素。
Built-ins for float¶
以下内置谓词是float类型的成员:
| 名称 | 返回类型 | 参数类型 | 描述 | 示例 |
|---|---|---|---|---|
fabs |
float |
返回绝对值 | fabs(-3.14) 结果为3.14, -3.14.fabs() 结果为3.14 |
|
pow |
float |
int |
求幂 | 2.0.pow(3) 结果为8.0 |
ftos |
str |
浮点转字符串 | 3.14.ftos() 结果为"3.14" |
|
floor |
int |
向下取整 | 3.14.floor() 结果为3 |
|
ceil |
int |
向上取整 | 3.14.ceil() 结果为4 |
|
round |
int |
四舍五入 | 3.14.round() 结果为3 |
|
next_up |
float |
下一个数 | 3.14.next_up() 结果为3.1400000000000001 |
|
next_down |
float |
上一个数 | 3.14.next_down() 结果为3.1399999999999999 |
|
ulp |
float |
最小浮点精度 | 3.14.ulp() 结果为2.220446049250313e-16 |
|
| ### Built-ins for string |
以下内置谓词是str类型的成员:
| 名称 | 返回类型 | 参数类型 | 描述 | 示例 |
|---|---|---|---|---|
len |
int |
获取长度 | "hello".len() 结果为5 |
|
match |
str |
正则匹配 | "hello".match("h.*") 结果为1 |
|
cat |
str |
str |
拼接 | "hello".cat("world") 结果为"helloworld" |
substr |
str |
int |
获取子串 | "hello".substr(2,3) 结果为"llo" |
toInt |
int |
字符串转整型 | "123".toInt() 结果为123 |
|
toFloat |
float |
字符串转浮点 | "123.45".toFloat() 结果为123.45 |
|
index_of |
int |
str |
返回子串第一次出现的位置 | "hello world".index_of("l") 结果为2 |
Built-ins for int¶
以下内置谓词是int类型的成员:
| 名称 | 返回类型 | 参数类型 | 描述 | 示例 |
|---|---|---|---|---|
abs |
int |
返回绝对值 | -3.abs() 结果为3 |
|
itos |
str |
整型转字符串 | 123.itos() 结果为"123" |
|
pow |
float |
int |
求幂 | 2.pow(3) 结果为8.0 |
rand |
int |
int |
随机数 | rand() |
rand_with_range |
int |
int , int |
随机数范围 | rand_with_range(1,10) |