差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
manual:reference:package:standard:main_page [2023/03/23 15:39] mikecovleemanual:reference:package:standard:main_page [2023/07/17 16:25] (当前版本) – [解释器上下文环境] mikecovlee
行 20: 行 20:
 \\ \\
 ^**单例对象**  ^**描述**  ^ ^**单例对象**  ^**描述**  ^
-| ''context''  | 解释器上下文环境 |+| ''context'' [[:manual:reference:package:standard:main_page#解释器上下文环境|解释器上下文环境 ]] |
 \\ \\
 ^**类型**  ^**描述**  ^ ^**类型**  ^**描述**  ^
行 172: 行 172:
 |boolean **exist**(string path)  | 判断文件是否存在 | |boolean **exist**(string path)  | 判断文件是否存在 |
 |boolean **rename**(string path,string target_path)  | 重命名/移动文件。若path不存在或target_path存在则不执行,且返回 false,否则返回 true | |boolean **rename**(string path,string target_path)  | 重命名/移动文件。若path不存在或target_path存在则不执行,且返回 false,否则返回 true |
-|number ctime(string path) | 返回文件的创建时间 (Unix Time) | +|number **ctime**(string path) | 返回文件的创建时间 (Unix Time) | 
-|number mtime(string path) | 返回文件的修改时间 (Unix Time) |+|number **mtime**(string path) | 返回文件的修改时间 (Unix Time) |
 |boolean **can_read**(string path)  | 判定一个路径是否具有可读权限 | |boolean **can_read**(string path)  | 判定一个路径是否具有可读权限 |
 |boolean **can_write**(string path)  | 判定一个路径是否具有可写权限 | |boolean **can_write**(string path)  | 判定一个路径是否具有可写权限 |
行 233: 行 233:
  
 ===== 3.5 运行时(runtime) ===== ===== 3.5 运行时(runtime) =====
 +==== 运行时命名空间 ====
  
 ^命名空间  ^描述  ^ ^命名空间  ^描述  ^
-| ''time_type''  |[[:manual:reference:package:standard:main_page#3.5.1 时间类型命名空间(runtime.time_type)| 3.5.1时间类型命名空间]]  |+| ''time_type''  |[[:manual:reference:package:standard:main_page#3.5.1 时间类型命名空间(runtime.time_type)| 3.5.1 时间类型命名空间]]  |
  
-^单例对 ^描述 +^单例对象  ^描述 
-|number **std_version**  |标准版本号 |+|number **std_version**  | 标准版本号 |
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
-|void **add_literal**([context], string literal, [function] func)  |注册字面量处理函数 | +|void **info**()  |从标准输出流输出解释器版本信息 |
-|number **argument_count**([function] func)  |返回函数的参数数量 | +
-|[expression] **build**([context], string)  |构建一个可用于计算的表达式 | +
-|array **cmd_args**([context])  |*返回由 string 构成的运行参数 array | +
-|void **delay**(number)  |使程序暂停一段时间,单位毫秒(但不停止计时) | +
-|[exception] **exception**(string)  |返回一个新建运行时异常 | +
-|string **get_current_dir**()  |返回当前执行路径 | +
-|string **get_import_path**()  |获取引入目录 |+
 |[hash_value] **hash**(var)  |计算一个变量的哈希值 | |[hash_value] **hash**(var)  |计算一个变量的哈希值 |
-|[namespace] **import**([context], string folder_path, string name)  |从 folder_path 动态加载一个扩展其规则与 import 语句相同 +|number **time**()  |获取计时器的读数单位毫秒 
-|void **info**()  |从标准输出流输出解释器版本信息 |+|void **delay**(number)  |使程序暂停一段时间,单位毫秒(但不停止计时) |
 |[time_type] **local_time**()  |获取当地时间和日期 | |[time_type] **local_time**()  |获取当地时间和日期 |
-|var **solve**([context], [expression])  |计算一个表达式 | +|[time_type] **local_time**(number unix_time)  |从 Unix Time 构建本地间和日期 |
-|[namespace] **source_import**([context], string path)  |动态加载一个扩展,需指定详细路径和文件名 | +
-|number **time**()  |获取计器的读数,单位毫秒 |+
 |[time_type] **utc_time**()  |获取 UTC 时间和日期 | |[time_type] **utc_time**()  |获取 UTC 时间和日期 |
 +|[time_type] **utc_time**(number unix_time)  |从 Unix Time 构建 UTC 时间和日期 |
 +|[exception] **exception**(string)  |返回一个新建运行时异常 |
 +|number **argument_count**([function] func)  |返回函数的参数数量 |
 +|string **get_current_dir**()  |返回当前执行路径 |
 +|string **get_import_path**()  |获取引入目录 |
 |var **wait_for**(number time, [function] func, array args)  |使用传入的参数执行函数,等待指定时间(毫秒)后若函数仍未完成则抛出异常 | |var **wait_for**(number time, [function] func, array args)  |使用传入的参数执行函数,等待指定时间(毫秒)后若函数仍未完成则抛出异常 |
 |var **wait_until**(number time, [function] func, array args)  |使用传入的参数执行函数,直到指定时间(毫秒)后若函数仍未完成则抛出异常 | |var **wait_until**(number time, [function] func, array args)  |使用传入的参数执行函数,直到指定时间(毫秒)后若函数仍未完成则抛出异常 |
 +
 +==== 解释器上下文环境 ====
 +
 +^单例对象  ^描述  ^
 +|array **cmd_args** | 由 string 构成的运行参数 array |
 +|[type] **channel** | 协程消息队列类型 |
 +
 +^方法  ^描述  ^
 +|[expression] **build**([context], string)  | 构建一个可用于计算的表达式 |
 +|var **solve**([context], [expression])  | 计算一个表达式 |
 +|[namespace] **import**([context], string folder_path, string name)  | 从 folder_path 动态加载一个扩展,其规则与 import 语句相同,失败时返回null |
 +|[namespace] **source_import**([context], string path)  | 动态加载一个扩展,需指定详细路径和文件名,失败时返回null |
 +|void **add_literal**([context], string literal, [function] func)  | 注册字面量处理函数 |
 +|void **link_var**([context], var lhs, var rhs) | 建立 lhs 到 rhs 的引用 |
 +|void **unlink_var**([context], var val) | 拷贝引用所在内存区块并使其独立,并将其退化为变量 |
 +|[coroutine] **create_co**([context], [function] func) | 从函数创建一个协程 |
 +|[coroutine] **create_co_s**([context], [function] func, array args) | 从函数创建一个协程,并传入参数 |
 +|void **destroy_co**([context], [coroutine]) | 手动销毁协程 |
 +|var **await**([context], [function] func) | 异步等待函数执行完毕 |
 +|var **await_s**([context], [function] func, array args) | 异步等待函数执行完毕,并传入参数 |
 +|number **resume**([context], [coroutine]) | 切换至指定的协程,返回 -1 为异常,-2 为协程已退出 |
 +|void **yield**([context]) | 切换回主协程 |
 +
 +**注意,await 系列函数一般在协程中使用,用于在等待执行时间较长函数的过程中自动的将上下文交由其他协程使用(也就是自动 yield)**\\
 +**因此,await 系列函数应使用原始的 CovScript API,而不是 CovScript 函数 **
 +
 +=== 协程消息队列类型 ===
 +
 +^方法  ^描述  ^
 +|void **consumer**([channel], [coroutine]) |将指定协程设置为消费者 |
 +|void **push**([channel], var val) |发送数据至队列并唤醒消费者 |
 +|var **pop**([channel]) |异步读取数据,会将当前协程设置为消费者,并当队列为空时 yield |
 +|void **clear**([channel]) |清空队列 |
 +|void **touch**([channel]) |手动唤醒消费者 |
 +|number **size**([channel]) |获取队列大小 |
 +|boolean **empty**([channel]) |返回队列是否为空 |
  
 ==== 3.5.1 时间类型命名空间(runtime.time_type) ==== ==== 3.5.1 时间类型命名空间(runtime.time_type) ====
行 272: 行 305:
 |number **year**([time_type])  |*自 1900 起之年 | |number **year**([time_type])  |*自 1900 起之年 |
 |boolean **is_dst**([time_type])  |*是否为夏令时 | |boolean **is_dst**([time_type])  |*是否为夏令时 |
 +|number **unixtime**([time_type]) |*转换为 Unix Time |
  
 ----- -----
行 303: 行 337:
  
 ^单例对象  ^描述  ^ ^单例对象  ^描述  ^
-|number **max**  |数值类型最大值 | +|number **max**  |数值类型浮点实现最大值 | 
-|number **min**  |数值类型最小值 |+|number **min**  |数值类型浮点实现最小值 | 
 +|number **integer_max**  |数值类型整数实现最大值 | 
 +|number **integer_min**  |数值类型整数实现最小值 | 
 +|number **float_max**  |数值类型浮点实现最大值 | 
 +|number **float_min**  |数值类型浮点实现最小值 |
 |number **inf**  |数值类型正无穷 | |number **inf**  |数值类型正无穷 |
 |number **nan**  |数值类型无意义 | |number **nan**  |数值类型无意义 |
行 334: 行 372:
 \\ \\
  
-===== 3.8 字符串(string) =====+===== 3.8 数值(number) ===== 
 + 
 +^**方法**  ^**描述** 
 +|boolean **is_integer**(number)  |返回数值实现是否为整数 | 
 +|boolean **is_float**(number)  |返回数值实现是否为浮点 | 
 +|integer **ntoi**(number)  |将数值转换为整数实现 | 
 +|float **ntof**(number)  |将数值转换为浮点实现 | 
 + 
 +----- 
 +\\ 
 + 
 +===== 3.9 字符串(string) =====
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
行 356: 行 405:
 \\ \\
  
-===== 3.数组(array) =====+===== 3.10 数组(array) =====
  
 ^命名空间  ^描述  ^ ^命名空间  ^描述  ^
-|''iterator''  |[[:manual:reference:package:standard:main_page#3.9.1 数组迭代器(array.iterator)| 3.9.1数组迭代器命名空间]]  |+|''iterator''  |[[:manual:reference:package:standard:main_page#3.10.1 数组迭代器(array.iterator)| 3.10.1数组迭代器命名空间]]  |
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
行 376: 行 425:
 |void **push_back**(array, var)  |将元素添加到容器末尾  | |void **push_back**(array, var)  |将元素添加到容器末尾  |
 |var **pop_back**(array)  |删除最后一个元素并返回  | |var **pop_back**(array)  |删除最后一个元素并返回  |
 +|var **sort**(array, [function] func)  |使用 func 作为比较器对数组进行排序  |
 |list **to_list**(array)  |将数组转换为链表  | |list **to_list**(array)  |将数组转换为链表  |
 |hash_map **to_hash_map**(array)  |将数组转换为哈希映射,要求数组中元素必须都是映射  | |hash_map **to_hash_map**(array)  |将数组转换为哈希映射,要求数组中元素必须都是映射  |
行 383: 行 433:
 \\ \\
  
-==== 3.9.1 数组迭代器(array.iterator) ====+==== 3.10.1 数组迭代器(array.iterator) ====
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
行 395: 行 445:
 \\ \\
  
-===== 3.10 线性表(list) =====+===== 3.11 线性表(list) =====
  
 ^命名空间  ^描述  ^ ^命名空间  ^描述  ^
-|''iterator''  |[[:manual:reference:package:standard:main_page#3.10.1 线性表迭代器(list.iterator)| 3.10.1线性表迭代器命名空间]]  |+|''iterator''  |[[:manual:reference:package:standard:main_page#3.11.1 线性表迭代器(list.iterator)| 3.11.1线性表迭代器命名空间]]  |
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
行 417: 行 467:
 |void **reverse**(list)  |将该线性表的所有元素的顺序反转  | |void **reverse**(list)  |将该线性表的所有元素的顺序反转  |
 |void **unique**(list)  |删除连续的重复元素  | |void **unique**(list)  |删除连续的重复元素  |
 +|void **sort**(list, [function] func)  |使用 func 作为比较器对线性表进行排序  |
  
-==== 3.10.1 线性表迭代器(list.iterator) ====+==== 3.11.1 线性表迭代器(list.iterator) ====
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
行 425: 行 476:
 |var **data**([iterator])  |*访问迭代器指向的元素  | |var **data**([iterator])  |*访问迭代器指向的元素  |
  
-===== 3.11 映射(pair) =====+===== 3.12 映射(pair) =====
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
行 434: 行 485:
 \\ \\
  
-===== 3.12 哈希映射(hash_map) =====+===== 3.13 哈希映射(hash_map) =====
  
 ^方法  ^描述  ^ ^方法  ^描述  ^
行 445: 行 496:
 |boolean **exist**(hash_map, var)  |查找是否存在映射  | |boolean **exist**(hash_map, var)  |查找是否存在映射  |
  
-===== 3.13 哈希集合(hash_set) =====+===== 3.14 哈希集合(hash_set) =====
  
 ^方法  ^描述  ^ ^方法  ^描述  ^