====== 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--)

==== 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) |查找是否存在映射 |