====== Covariant Script 标准包 ======
-----
\\
===== 3.1 全局作用域(global) =====
^**命名空间** ^**描述** ^
| array |[[wiki:reference:package:standard:main_page#3.9 数组(array)| 3.9数组类型命名空间]] |
| char |[[wiki:reference:package:standard:main_page#3.7 字符(char)| 3.7字符类型命名空间]] |
| exception |[[wiki:reference:package:standard:main_page#3.2 异常(exception)| 3.2异常命名空间]] |
| hash_map |[[wiki:reference:package:standard:main_page#3.12 哈希表(hash_map)| 3.12哈希表类型命名空间]] |
| math |[[wiki:reference:package:standard:main_page#3.6 数学(math)| 3.6数学命名空间]] |
| iostream |[[wiki:reference:package:standard:main_page#3.3 输入输出流(iostream)| 3.3输入输出流命名空间]] |
| list |[[wiki:reference:package:standard:main_page#3.10 线性表(list)| 3.10链表类型命名空间]] |
| pair |[[wiki:reference:package:standard:main_page#3.11 映射(pair)| 3.11映射类型命名空间]] |
| runtime |[[wiki:reference:package:standard:main_page#3.5 运行时(runtime)| 3.5运行时命名空间]] |
| string |[[wiki:reference:package:standard:main_page#3.8 字符串(string)| 3.8字符串类型命名空间]] |
| system |[[wiki:reference:package:standard:main_page#3.4 系统(system)| 3.4系统命名空间]] |
\\
^**单例对象** ^**描述** ^
| context |解释器上下文环境 |
\\
^**类型** ^**描述** ^
| boolean |逻辑类型命名空间 |
| number |数值类型命名空间 |
| pointer |指针类型命名空间 |
\\
^**方法** ^**描述** ^
|**var** clone(var) |复制一个变量并返回 |
|**var** move(var) |将变量标记为右值 |
|**[range]** range(number stop) |生成一个步长为 1 的一个区间[0, stop) |
|**[range]** range(number start, number stop) |生成一个步长为 step 默认为 1 的区间 [start, stop) |
|**[range]** range(number start, number stop, number step = 1) |生成一个步长为 step 的区间 [start, stop) |
|**void** swap(var, var) |交换两个变量的值 |
|**number** to_integer(var) |将一个变量转换为整数 |
|**string** to_string(var) |将一个变量转换为字符串 |
|**string** type(var) |获取一个变量的类型名称 |
注意,range 函数生成的区间,仅可用于 foreach 遍历操作,如:
foreach num in range(10) do system.out.println(num)
-----------
\\
===== 3.2 异常(exception) =====
异常域为所有异常提供了统一的方法。一般来说,不同类型的异常来自不同的命名空间(例如runtime.exception),但他们的设计大相径庭。
^**代码** ^**功能** ^
|**string** what([exception]) |*获取异常详情 |
注意:目前只有 runtime 命名空间下的 exception 可用。
-----
\\
===== 3.3 输入输出流(iostream) =====
^**命名空间** ^**描述** ^
| seekdir |[[wiki:reference:package:standard:main_page#3.3.1 寻位方向(seekdir)| 3.3.1寻位方向命名空间]] |
| openmode |[[wiki:reference:package:standard:main_page#3.3.2 打开方式(open_mode)| 3.3.2打开方式命名空间]] |
| istream |[[wiki:reference:package:standard:main_page#3.3.3 输入流(istream)| 3.3.3输入流命名空间]] |
| ostream |[[wiki:reference:package:standard:main_page#3.3.4 输出流(ostream)| 3.3.4输出流命名空间]] |
| char_buff |[[wiki:reference:package:standard:main_page#?3.3.5 字符缓冲区类型(char_buff)| 3.3.5字符缓冲区类型]] |
^**方法** ^**描述** ^
|**[istream]** ifstream(string path) |新建一个输入文件流(openmode.in) |
|**[ostream]** ofstream(string path) |新建一个输出文件流(openmode.out) |
|**[istream/ostream]** fstream(string path, [openmode] mode) |新建一个文件流,其具体类型取决于打开方式 |
|oid setprecision(number) |设置输出精度(to_string 的精度) |
==== 3.3.1 寻位方向(seekdir) ====
^**单例对象** ^**描述** ^
| start |流的开始 |
| finish |流的结尾 |
| present |当前位置 |
==== 3.3.2 打开方式(open_mode) ====
^**代码** ^**功能** ^
| in |为读打开(输入流) |
| bin_in |为读打开(输入流,二进制) |
| out |为写打开(清空内容, 输出流) |
| bin_out |为写打开(清空内容, 输出流, 二进制) |
| app |为写打开(追加内容, 输出流) |
| bin_app |为写打开(追加内容, 输出流, 二进制 |
==== 3.3.3 输入流(istream) ====
^**方法** ^**描述** ^
|char get([istream])
|从流中读取一个字符 |
|char peek([istream])
|从流中预读取下一个字符(读取但不删除) |
|void unget([istream])
|向流中放回一个字符 |
|string getline([istream])
|从流中读取一行字符串 |
|number tell([istream])
|?获取流位置指示器 |
|void seek([istream], number pos)
|设置流位置 |
|void seek_from([istream], [seekdir], number offset)
|?设置相对寻位方向的流位置 |
|boolean good([istream])
|流是否正常打开?检查是否有错误 |
|boolean eof([istream])
|检查是否到达文件?流结尾 |
|var input([istream])
|从流中获取输入(格式化) |
|void ignore([istream])
|忽略?流中当前及以前行所有内容 |
==== 3.3.4 输出流(ostream) ====
^**代码** ^**功能** ^
|void put([ostream], char)| 向流中插入字符 |
|**number** tell([ostream])| 获取流位置指示器 |
|void seek([ostream], number pos)| 设置流位置 |
|void seek_from([ostream], [seekdir], number offset)| 设置相对寻位方向的流位置 |
|void flush([ostream])| ?与底层存储设备同步 |
|**boolean** good([ostream])| 流是否正常打开?检查是否有错误 |
|void print([ostream], var)| 向流中输出内容,仅可输出支持 to_string 的类型(不换行) |
|void println([ostream], var)| 向流中输出内容,仅可输出支持 to_string 的类型(换行) |
==== ?3.3.5 字符缓冲区类型(char_buff) ====
^**代码** ^**功能** ^
|**[istream]** get_istream([char_buff]) |转换至输入流 |
|**[ostream]** get_ostream([char_buff]) |转换至输出流 |
|**string** get_string([char_buff]) |将实际缓冲区转换为字符串 |
-----
\\
===== 3.4 3.4 系统(system) =====
^**命名空间** ^**描述** ^
| console |[[wiki:reference:package:standard:main_page#3.4.1 控制台(system.console)| 3.4.1控制台命名空间]] |
| file |[[wiki:reference:package:standard:main_page#3.4.2 文件(system.file)| 3.4.2文件命名空间]] |
| path |[[wiki:reference:package:standard:main_page#3.4.3 路径(system.path)| 3.4.3路径命名空间]] |
\\
^**单例对象** ^**描述** ^
| in |标准输入流 |
| out |标准输出流 |
\\
^**方法** ^**描述** ^
|oid exit(number) |清理资源并退出进程 |
|**boolean** is_platform_darwin() |判断是否为 macOS 平台 |
|**boolean** is_platform_linux() |判定是否为 Linux 平台 |
|**boolean** is_platform_unix() |判断是否为 Unix 兼容平台 |
|**boolean** is_platform_windows() |判定是否为 Windows 平台 |
|**number** run(string) |在系统环境中运行一条指令,并返回错误码 |
|**string** getenv(string) |获取环境变量 |
==== 3.4.1 控制台(system.console) ====
^**方法** ^**描述** ^
|oid clrscr() |清屏 |
|oid echo(boolean) |设置光标可见性 |
|**char** getch() |从键盘获取输入的一个字符 |
|oid gotoxy(number x, number y) |工作不正常?移动光标至x,y |
|**bool** kbhit() |工作不正常按一次永久为true?判断是否有键盘输入 |
|**number** terminal_height() |获取控制台高度(单位:像素) |
|**number** terminal_width() |获取控制台宽度(单位:像素) |
===== 3.4.2 文件(system.file) ====
^**方法** ^**描述** ^
|**boolean** copy(string path, string target_path) |复制path文件到targetpath。若path不存在则 target_path 为空文件且返回 false,否则返回 true;若 target_path 已存在则覆盖 |
|**boolean** remove(string path) |删除文件 |
|**boolean** exists(string path) |判断文件是否存在 |
|**boolean** rename(string path,string target_path) |重命名/移动文件。若path不存在或target_path存在则不执行,且返回 false,否则返回 true |
|**boolean** is_file(string path) |判定一个路径是否为文件 |
|**boolean** is_directory(string path) |判定一个路径是否为目录 |
|**boolean** can_read(string path) |判定一个路径是否具有可读权限 |
|**boolean** can_write(string path) |判定一个路径是否具有可写权限 |
|**boolean** can_execute(string path) |判定一个文件是否为可执行文件 |
|**boolean** mkdir(string path) |创建一个目录,成功返回真 |
|**boolean** mkdir_p(string path) |递归创建一个目录,成功返回真 |
|**boolean** chmod(string path,string mod) |更改路径权限 |
|**boolean** chmod_r(string path,string mod) |递归更改路径权限 |
注意:更改路径权限这里,权限使用特定格式的字符串指定,格式如下:
字符串可以分为三组字符,每一组有三个,每个字符都代表不同的权限,分别为
读取(r)、
写入(w)和
执行(x),例如
(rwxr-xr--)
- 第一组字符(1-3)表示文件所有者的权限,这里表示所有者拥有读取(r)、写入(w)和执行(x)的权限
- 第二组字符(4-6)表示文件所属用户组的权限,这里表示该组拥有读取(r)和执行(x)的权限,但没有写入权限
- 第三组字符(7-9)表示所有其他用户的权限,这里表示其他用户只能读取(r)文件
==== 3.4.3 路径(system.path) ====
^**命名空间** ^**描述** ^
| type |[[wiki:reference:package:standard:main_page#3.4.3.1 路径类型(system.type)| 3.4.3.1路径类型命名空间]] |
| info |[[wiki:reference:package:standard:main_page#3.4.3.2 路径信息(system.path.info)| 3.4.3.2路径信息命名空间]] |
\\
^**单例对象** ^**描述** ^
|**char** separator |路径分隔符 |
|**char** delimiter |路径定界符 |
|**array** scan(string) |扫描路径并返回由path_info类型组成的array |
=== 3.4.3.1 路径类型(system.type) ===
^**单例对象** ^**描述** ^
| unknown |未知 |
| fifo |管道 |
| sock |套接字 |
| chr |字符设备 |
| dir |文件夹 |
| blk |块设备 |
| reg |常规 |
| lnk |链接 |
=== 3.4.3.2 路径信息(system.path.info) ===
^**代码** ^**功能** ^
|**string** name([path_info]) |*获取路径名 |
|**[path_type]** type([path_info]) |*获取路径类型 |
-----
\\
===== 3.5 运行时(runtime) =====
^**命名空间** ^**描述** ^
| time_type |[[wiki:reference:package:standard:main_page#3.5.1 时间类型命名空间(runtime.time_type)| 3.5.1时间类型命名空间]] |
^**单例对象** ^**描述** ^
|**number** std_version |标准版本号 |
^**方法** ^**描述** ^
|oid add_literal([context], string literal, [function] func) |注册字面量处理函数 |
|**number** argument_count([function] func) |返回函数的参数数量 |
|**[expression]** build([context], string) |构建一个可用于计算的表达式 |
|**array** cmd_args([context]) |*返回由 string 构成的运行参数 array |
|oid delay(number) |使程序暂停一段时间,单位毫秒(但不停止计时) |
|**[exception]** exception(string) |返回一个新建运行时异常 |
|**string** get_current_dir() |返回当前执行路径 |
|**string** get_import_path() |获取引入目录 |
|**[hash_value]** hash(var) |计算一个变量的哈希值 |
|**[namespace]** import([context], string folder_path, string name) |从 folder_path 动态加载一个扩展,其规则与 import 语句相同 |
|oid info() |从标准输出流输出解释器版本信息 |
|**[time_type]** local_time() |获取当地时间和日期 |
|**var** solve([context], [expression]) |计算一个表达式 |
|**[namespace]** source_import([context], string path) |动态加载一个扩展,需指定详细路径和文件名 |
|**number** time() |获取计时器的读数,单位毫秒 |
|**[time_type]** utc_time() |获取 UTC 时间和日期 |
|**var** wait_for(number time, [function] func, array args) |使用传入的参数执行函数,等待指定时间(毫秒)后若函数仍未完成则抛出异常 |
|**var** wait_until(number time, [function] func, array args) |使用传入的参数执行函数,直到指定时间(毫秒)后若函数仍未完成则抛出异常 |
==== 3.5.1 时间类型命名空间(runtime.time_type) ====
^**方法** ^**描述** ^
|**number** sec([time_type]) |*分后之秒,范围是[0, 60*] |
|**number** min([time_type]) |*时后之分,范围是[0, 59*] |
|**number** hour([time_type]) |*自午夜起之时,范围是[0, 23*] |
|**number** wday([time_type]) |*自星期日起之日,范围是[0, 6*] |
|**number** mday([time_type]) |*月之日,范围是[1, 31*] |
|**number** yday([time_type]) |*自 1 月 1 日起之日,范围是[0, 365*] |
|**number** mon([time_type]) |*自一月起之月,范围是[0, 11*] |
|**number** year([time_type]) |*自 1900 起之年 |
|**boolean** is_dst([time_type]) |*是否为夏令时 |
-----
\\
===== 3.6 数学(math) =====
^**命名空间** ^**描述** ^
| constants |[[wiki:reference:package:standard:main_page#3.6.1 常量(math.constants)| 3.6.1常量命名空间]] |
^**方法** ^**描述** ^
|**number** abs(number) |绝对值 |
|**number** ln(number) |以 e 为底的对数 |
|**number** log10(number) |以 10 为底的对数 |
|**number** log(number a, number b) |以 a 为底 b 的对数 |
|**number** sin(number) |正弦值(弧度) |
|**number** cos(number) |余弦值(弧度) |
|**number** tan(number) |正切值(弧度) |
|**number** asin(number) |反正弦值(弧度) |
|**number** acos(number) |反余弦值(弧度) |
|**number** atan(number) |反正切值(弧度) |
|**number** sqrt(number) |开方 |
|**number** root(number a, number b) |a 的 b 次方根 |
|**number** pow(number a, number b) |a 的 b 次方 |
|**number** min(number a, number b) |a 和 b 的最小值 |
|**number** max(number a, number b) |a 和 b 的最大值 |
|**number** rand(number, number) |获取区间内的伪随机数 |
|**number** randint(number, number) |获取区间内的伪随机整数 |
==== 3.6.1 常量(math.constants) ====
^**单例对象** ^**描述** ^
|**number** max |数值类型最大值 |
|**number** min |数值类型最小值 |
|**number** inf |数值类型正无穷 |
|**number** nan |数值类型无意义 |
|**number** pi |圆周率 |
|**number** e |自然底数 |
-----
\\
===== 3.7 字符(char) =====
^**方法** ^**描述** ^
|**boolean** isalnum(char) |检查字符是否是字母或数字 |
|**boolean** isalpha(char) |检查字符是否是字母 |
|**boolean** islower(char) |检查字符是否是小写字母 |
|**boolean** isupper(char) |检查字符是否是大写字母 |
|**boolean** isdigit(char) |检查字符是否是数字 |
|**boolean** iscntrl(char) |检查字符是否是控制字符 |
|**boolean** isgraph(char) |检查字符是否是图形字符 |
|**boolean** isspace(char) |检查字符是否是空白字符 |
|**boolean** isblank(char) |检查字符是否是空格或 tab |
|**boolean** isprint(char) |检查字符是否是打印字符 |
|**boolean** ispunct(char) |检查字符是否是标点符号 |
|**char** tolower(char) |将字符转换为小写 |
|**char** toupper(char) |将字符转换为大写 |
|**char** from_ascii(number) |将 ascii 码转换为字符 |
-----
\\
===== 3.8 字符串(string) =====
^**方法** ^**描述** ^
|**string** append(string, var) |在尾部追加内容 |
|oid assign(string, number index,char ch) |在字符串 index 处给字符赋值 |
|oid clear(string) |清空 |
|**string** cut(string, number count) |从尾部删除指定长度的字符串 |
|**boolean** empty(string) |检查字符串是否为空 |
|**number** find(string, string target, number begin) |返回从指定位置开始匹配到的第一个子串下标 |
|**string** insert(string, number index, var) |在指定位置处插入内容 |
|**string** replace(string, number begin, number count, var) |将从指定位置开始的指定个数字符替换 |
|**number** rfind(string, string target, number begin) |从指定位置开始从右向左查找一段字符串 |
|**number** size(string) |*获取字符个数 |
|**array** split(string,array) |使用指定的字符集合分割字符串,返回由 string 组成的 array |
|**string** substr(string, number begin, number count) |返回从指定位置截取指定长度的字符串 |
|**number** to_number(string) |将字符串转换为数值 |
|**string** tolower(string) |将字符串转换为小写 |
|**string** toupper(string) |将字符串转换为大写 |
-----
\\
===== 3.9 数组(array) =====
^**命名空间** ^**描述** ^
|iterator |[[wiki:reference:package:standard:main_page#3.9.1 数组迭代器(array.iterator)| 3.9.1数组迭代器命名空间]] |
^**方法** ^**描述** ^
|**var** at(array, number) |访问指定的元素,同时进行越界检查 |
|**var** front(array) |*访问第一个元素 |
|**var** back(array) |*访问最后一个元素 |
|**[iterator]** begin(array) |*获取指向容器第一个元素的迭代器 |
|**[iterator]** end(array) |*获取指向容器尾端的迭代器 |
|**boolean** empty(array) |检查容器是否为空 |
|**number** size(array) |*获取容纳的元素数 |
|void clear(array) |删除全部内容 |
|**[iterator]** insert(array, [iterator], var) |插入元素,插入到迭代器指向的元素之前,返回指向插入元素的迭代器 |
|**[iterator]** erase(array, [iterator]) |删除元素,返回指向要删除的元素的下一个元素的迭代器 |
|void push_front(array, var) |在容器的开始处插入新元素 |
|**var** pop_front(array) |删除第一个元素并返回 |
|void push_back(array, var) |将元素添加到容器末尾 |
|**var** pop_back(array) |删除最后一个元素并返回 |
|**hash_map** to_hash_map(array) |将数组转换为散列表,要求数组中元素必须都是映射 |
|**list** to_list(array) |将数组转换为链表 |
-----
\\
==== 3.9.1 数组迭代器(array.iterator) ====
^**方法** ^**描述** ^
|**[iterator]** next([iterator]) |向前移动并返回迭代器 |
|**[iterator]** next_n([iterator]) |同 next,向前移动 n 个单位并返回 |
|**[iterator]** prev([iterator]) |向后移动并返回迭代器 |
|**[iterator]** prev_n([iterator]) |同 prev,向后移动 n 个单位并返回 |
|**var** data([iterator]) |*访问迭代器指向的元素 |
-----
\\
===== 3.10 线性表(list) =====
^**命名空间** ^**描述** ^
|iterator |[[wiki:reference:package:standard:main_page#3.10.1 线性表迭代器(list.iterator)| 3.10.1线性表迭代器命名空间]] |
^**方法** ^**描述** ^
|**var** front(list) |*访问第一个元素 |
|**var** back(list) |*访问最后一个元素 |
|**[iterator]** begin(list) |*获取指向容器第一个元素的迭代器 |
|**[iterator]** end(list) |*获取指向容器尾端的迭代器 |
|**boolean** empty(list) |检查容器是否为空 |
|**number** size(list) |*获取容纳的元素数 |
|void clear(list) |删除全部内容 |
|**[iterator]** insert(list, [iterator], var) |插入元素, 插入到迭代器指向的元素之前,返回指向插入的元素的迭代器 |
|**[iterator]** erase(list, [iterator]) |删除元素,返回指向要删除的元素的下一个元素的迭代器 |
|void push_front(list, var) |在容器的开始处插入新元素 |
|**var** pop_front(list) |删除并返回第一个元素 |
|void push_back(list, var) |将元素添加到容器末尾 |
|**var** pop_back(list) |删除并返回最后一个元素 |
|void remove(list, var) |删除所有与指定变量相等的元素 |
|void reverse(list) |将该线性表的所有元素的顺序反转 |
|void unique(list) |删除连续的重复元素 |
==== 3.10.1 线性表迭代器(list.iterator) ====
^**方法** ^**描述** ^
|**[iterator]** next([iterator]) |向前移动迭代器 |
|**[iterator]** prev([iterator]) |向后移动迭代器 |
|**var** data([iterator]) |*访问迭代器指向的元素 |
===== 3.11 映射(pair) =====
^**方法** ^**描述** ^
|**var** first(pair) |*获取第一个元素 |
|**var** second(pair) |*获取第二个元素 |
-----
\\
===== 3.12 哈希表(hash_map) =====
^**方法** ^**描述** ^
|**boolean** empty(hash_map) |检查容器是否为空 |
|**number** size(hash_map) |*获取容纳的元素数 |
|void clear(hash_map) |删除全部内容 |
|void insert(hash_map, var, var) |插入一个映射 |
|void erase(hash_map, var) |删除键对应的映射 |
|**var** at(hash_map, var) |访问指定的元素,同时进行越界检查 |
|**boolean** exist(hash_map, var) |查找是否存在映射 |