std.core 包

功能介绍

core 包是标准库的核心包,提供了适用仓颉语言编程最基本的一些 API 能力。

提供了内置类型(有符号整型、无符号整型、浮点型等)、常用函数(print、println、eprint 等)、常用接口(ToString、Hashable、Equatable、Collection 等)、常用类和结构体(Array、String、Range 等)、常用异常类(Error、Exception 以及它们的一些细分子类)。

说明:

core 包不需要显式导入,默认导入。

API 列表

函数

函数名功能
CJ_CORE_AddAtexitCallback(() -> Unit)注册退出函数,当前进程退出时执行该函数。
CJ_CORE_ExecAtexitCallbacks()执行注册的退出函数,执行到此函数直接结束当前进程。
acquireArrayRawData(Array<T>) where T <: CType获取 Array<T> 中数据的原始指针实例,T 需要满足 CType 约束。
alignOf<T>() where T <: CType获取类型 T 的内存对齐值。
eprint(String, Bool)用于打印错误消息。
eprintln(String)用于打印错误消息,末尾添加换行。
ifNone(Option<T>, () -> Unit)如果输入是 Option.None 类型数据,则执行 action 函数。
ifSome(Option<T>, (T) -> Unit)如果输入是 Option.Some 类型数据,则执行 action 函数。
print(Bool, Bool)向控制台输出 Bool 类型数据的字符串表达。
print(Float16, Bool)向控制台输出 Float16 类型数据的字符串表达。
print(Float32, Bool)向控制台输出 Float32 类型数据的字符串表达。
print(Float64, Bool)向控制台输出 Float64 类型数据的字符串表达。
print(Int16, Bool)向控制台输出 Int16 类型数据的字符串表达。
print(Int32, Bool)向控制台输出 Int32 类型数据的字符串表达。
print(Int64, Bool)向控制台输出 Int64 类型数据的字符串表达。
print(Int8, Bool)向控制台输出 Int8 类型数据的字符串表达。
print(Rune, Bool)向控制台输出 Rune 类型数据的字符串表达。
print(String, Bool)向控制台输出指定字符串。
print(UInt16, Bool)向控制台输出 UInt16 类型数据的字符串表达。
print(UInt32, Bool)向控制台输出 UInt32 类型数据的字符串表达。
print(UInt64, Bool)向控制台输出 UInt64 类型数据的字符串表达。
print(UInt8, Bool)向控制台输出 UInt8 类型数据的字符串表达。
print<T>(T, Bool) where T <: ToString向控制台输出 T 类型实例的字符串表示。
println()向标准输出(stdout)输出换行符。
println(Bool)向控制台输出 Bool 类型数据的字符串表达,末尾添加换行。
println(Float16)向控制台输出 Float16 类型数据的字符串表达,末尾添加换行。
println(Float32)向控制台输出 Float32 类型数据的字符串表达,末尾添加换行。
println(Float64)向控制台输出 Float64 类型数据的字符串表达,末尾添加换行。
println(Int16)向控制台输出 Int16 类型数据的字符串表达,末尾添加换行。
println(Int32)向控制台输出 Int32 类型数据的字符串表达,末尾添加换行。
println(Int64)向控制台输出 Int64 类型数据的字符串表达,末尾添加换行。
println(Int8)向控制台输出 Int8 类型数据的字符串表达,末尾添加换行。
println(Rune)向控制台输出 Rune 类型数据的字符串表达,末尾添加换行。
println(String)向控制台输出指定字符串,末尾添加换行。
println(UInt16)向控制台输出 UInt16 类型数据的字符串表达,末尾添加换行。
println(UInt32)向控制台输出 UInt32 类型数据的字符串表达,末尾添加换行。
println(UInt64)向控制台输出 UInt64 类型数据的字符串表达,末尾添加换行。
println(UInt8)向控制台输出 UInt8 类型数据的字符串表达,末尾添加换行。
println<T>(T) where T <: ToString向控制台输出 T 类型实例的字符串表示,末尾添加换行。
refEq(Object, Object)判断两个 Object 实例的内存地址是否相同。
releaseArrayRawData(CPointerHandle<T>) where T <: CType释放原始指针实例,该实例通过 acquireArrayRawData 获取。
sizeOf<T>() where T <: CType获取类型 T 所占用的内存空间大小。
zeroValue<T>()获取一个已全零初始化的 T 类型实例。

类型别名

类型别名功能
ByteByte 类型是内置类型 UInt8 的别名。
IntInt 类型是内置类型 Int64 的别名。
UIntUInt 类型是内置类型 UInt64 的别名。

内置类型

内置类型名功能
Int8表示 8 位有符号整型,表示范围为 [-2^7, 2^7 - 1]。
Int16表示 16 位有符号整型,表示范围为 [-2^{15}, 2^{15} - 1]。
Int32表示 32 位有符号整型,表示范围为 [-2^{31}, 2^{31} - 1]。
Int64表示 64 位有符号整型,表示范围为 [-2^{63}, 2^{63} - 1]。
IntNative表示平台相关的有符号整型,其长度与当前系统的位宽一致。
UInt8表示 8 位无符号整型,表示范围为 [0 ~ 2^8]。
UInt16表示 16 位无符号整型,表示范围为 [0 ~ 2^{16}]。
UInt32表示 32 位无符号整型,表示范围为 [0 ~ 2^{32}]。
UInt64表示 64 位无符号整型,表示范围为 [0 ~ 2^{64}]。
UIntNative表示平台相关的无符号整型,其长度与当前系统的位宽一致。
Float16表示 16 位浮点数,符合 IEEE 754 中的半精度格式(binary16)。
Float32表示 32 位浮点数,符合 IEEE 754 中的单精度格式(binary32)。
Float64表示 64 位浮点数,符合 IEEE 754 中的双精度格式(binary64)。
Bool表示布尔类型,有 truefalse 两种取值。
Rune表示 unicode 字符集中的字符。
Unit表示仓颉语言中只关心副作用而不关心值的表达式的类型。
CPointer<T>表示 T 类型实例的指针,在与 C 语言互操作的场景下使用,对应 C 语言的 T*
CString表示 C 风格字符串,在与 C 语言互操作的场景下使用。

接口

接口名功能
AnyAny 是所有类型的父类型,所有 interface 都默认继承它,所有非 interface 类型都默认实现它。
RuneExtension该接口用于为 Rune 类型实现扩展方法,接口本身为不包含任何属性、方法。
Hasher该接口用于处理哈希组合运算。
ThreadContext仓颉线程上下文接口。
ByteExtension该接口用于为 Byte 类型实现扩展方法,接口本身为不包含任何属性、方法。
Countable<T>该接口表示类型可数。
Collection<T>该接口用来表示集合,通常容器类型应该实现该接口。
FloatToBits该接口用于扩展 Float 类型与以位表示的整形数值转换。
Less<T>该接口表示小于计算。
Greater<T>该接口表示大于计算。
LessOrEqual<T>该接口表示小于等于计算。
GreaterOrEqual<T>该接口表示大于等于计算。
Comparable<T>该接口表示比较运算,是等于、小于、大于、小于等于、大于等于接口的集合体。
Equal<T>该接口用于支持判等操作。
NotEqual<T>该接口用于支持判不等操作。
Equatable<T>该接口是判等和判不等两个接口的集合体。
Hashable该接口用于计算哈希值。
Iterable<E>该接口表示可迭代,实现了该接口的类型(通常为容器类型)可以在 for-in 语句中实现迭代,也可以获取其对应的迭代器类型实例,调用 next 函数实现迭代。
Resource该接口用于资源管理,通常用于内存、句柄等资源的关闭和释放。
ToString该接口用来提供具体类型的字符串表示。
CType表示支持与 C 语言互操作的接口。

类名功能
ArrayIterator<T>数组迭代器,迭代功能详述见 IterableIterator 接口说明。
Box<T>Box 类型提供了为其他类型添加一层 class 封装的能力。
Future<T>Future<T> 实例代表一个仓颉线程任务,可用于获取仓颉线程的计算结果,向仓颉线程发送取消信号。
Iterator<T>该类表示迭代器,提供 next 方法支持对容器内的成员进行迭代遍历。
Object构造一个 object 实例。
RangeIterator<T> <: Iterator<T> where T <: Countable<T> & Comparable<T> & Equatable<T>Range 类型的迭代器,迭代功能详述见 IterableIterator 接口说明。
StackTraceElement表示一个异常堆栈的具体信息,包括异常发生的类名、函数名、文件名、行号。
StringBuilder该类主要用于字符串的构建。
ThreadThread 类代表一个仓颉类,可用于获取线程 ID 及名字、查询线程是否存在取消请求、注册线程未处理异常的处理函数等。
ThreadLocal<T>该类表示仓颉线程局部变量。

枚举

枚举名功能
AnnotationKind表示自定义注解希望支持的位置。
Endian枚举类型 Endian 表示运行平台的端序,分为大端序和小端序。
OrderingOrdering 表示比较大小的结果,它包含三种情况:小于,大于和等于。
Option<T>Option<T> 是对 T 类型的封装,表示可能有值也可能无值。

结构体

结构体名功能
Array<T>仓颉数组类型,用来表示单一类型的元素构成的有序序列。
CPointerHandle<T> where T <: CType表示 Array 数组的原始指针,该类型中的泛型参数应该满足 CType 约束。
CPointerResource<T> where T <: CType该结构体表示 CPointer 对应的资源管理类型,其实例可以通过 CPointer 的成员函数 asResource 获取。
CStringResource该结构体表示 CString 对应的资源管理类型,其实例可以通过 CString 的成员函数 asResource 获取。
DefaultHasher该结构体提供了默认哈希算法实现。
LibC提供了仓颉中较为高频使用的 C 接口,如申请、释放堆上 CType 实例。
Range<T> where T <: Countable<T> & Comparable<T> & Equatable<T>该类是区间类型,用于表示一个拥有固定范围和步长的 T 的序列,要求 T 是可数的,有序的。
String该结构体表示仓颉字符串,提供了构造、查找、拼接等一系列字符串操作。

异常类

异常类名功能
ErrorError 是所有错误类的父类。该类不可被继承,不可初始化,但是可以被捕获到。
InternalError表示内部错误的错误类,该类不可初始化,但是可以被捕获到。
OutOfMemoryError表示内存不足错误的错误类,该类不可被继承,不可初始化,但是可以被捕获到。
StackOverflowError表示堆栈溢出错误的错误类,该类不可被继承,不可初始化,但是可以被捕获到。
ExceptionException 是所有异常类的父类。
SpawnException线程异常类,表示线程处理过程中发生异常。
IllegalArgumentException表示参数非法的异常类。
IllegalFormatException表示变量的格式无效或不标准时的异常类。
IllegalStateException表示状态非法的异常类。
IndexOutOfBoundsException表示索引越界的异常类。
NegativeArraySizeException表示数组索引值为负数的异常类。
NoneValueException表示 Option<T> 实例的值为 None 的异常类,通常在 getOrThrow 函数中被抛出。
UnsupportedException表示功能未支持的异常类。
OverflowException表示算术运算溢出的异常类。
IllegalMemoryException表示内存操作错误的异常类。
ArithmeticException算术异常类,发生算术异常时使用。