基本功能
介绍
Julia Base 中包含一系列适用于科学及数值计算的函数和宏,但也可以用于通用编程。其它功能则由 Julia 生态圈中的各种库来提供。
一些通用的提示:
可以通过 import Module 导入想要使用的模块,并利用 Module.fn(x) 语句来实现对模块内函数的调用。
此外,using Module 语句会将名为 Module 的模块中的所有可调函数引入当前的命名空间。
按照约定,名字以感叹号(!)结尾的函数会改变其输入参数的内容。 一些函数同时拥有改变参数(例如 sort!)和不改变参数(sort)的版本。
Base 和标准库的行为稳定性遵循 SemVer 的定义,但仅限于已经文档化的部分; 即已包含在 Julia 文档中且未标记为不稳定的内容。 更多信息请参阅 API 常见问题。
基础操作
| 函数名 | 简介 |
| exit | 停止程序并返回退出码 |
| atexit | 注册一个零参数或单参数函数,使其在进程退出时被调用 |
| isinteractive | 确定 Julia 是否正在运行交互式会话 |
| Base.summarysize | 计算从给定参数可达的所有唯一对象所使用的内存总量(以字节为单位) |
| __precompile__ | 指定调用此函数的文件是否可被预编译,默认值为 true |
| include | 在模块的全局作用域中执行输入源文件的内容 |
| include_string | 与 include 类似,但不是从文件中读取代码,而是从给定的字符串中读取代码并执行 |
| include_dependency | 在模块中声明由 path(可以是相对路径或绝对路径)指定的文件、目录或符号链接是预编译的依赖项 |
| __init__ | 在运行时首次加载该模块后立即执行 |
| which | 返回函数 f 在给定参数类型下会被调用的方法 |
| methods | 返回函数 f 的方法表 |
| @show | 将一个或多个表达式及其结果打印到标准输出,并返回最后一个表达式的结果 |
| ans | 一个引用最后一次计算结果的变量,会自动导入到交互式提示符中 |
| err | 一个引用最近抛出错误的变量,会自动导入到交互式提示符中。抛出的错误会被收集在一个异常堆栈中 |
| Base.active_project | 返回当前活动的 Project.toml 文件的路径 |
| Base.set_active_project | 将当前活动的 Project.toml 文件设置为 projfile |
关键字
以下是 Julia 中的保留关键字列表: baremodule、begin、break、catch、const、continue、do、 else、elseif、end、export、false、finally、for、function、global、if、import、let、local、macro、module、quote、 return、struct、true、try、using、while。 这些关键字不能用作变量名。
以下双词组合是保留的: abstract type、mutable struct、primitive type。 但是,你可以创建以下名称的变量: abstract、mutable、primitive 和 type。
最后: where 被解析为中缀运算符,用于编写参数化方法和类型定义; in 和 isa 被解析为中缀运算符; outer 在用于修改 for 循环迭代规范中变量作用域时被解析为关键字; 而 as 用作关键字,用于重命名通过 import 或 using 引入作用域的标识符。 不过,创建名为 where、in、isa、outer 和 as 的变量是允许的。
| 函数名 | 简介 |
| module | 用于声明一个模块 |
| export | 用于模块内部,指示 Julia 哪些函数或变量应该对用户可见 |
| import | 会加载模块或包 |
| using | 会加载模块或包,并使其导出的名称可以直接使用 |
| as | as 关键字用于在 import 或 using 语句中重命名引入作用域的标识符,以解决命名冲突或简化名称 |
| baremodule | 用于声明一个不包含 using Base 或 eval、include 等本地定义的模块 |
| function | 函数通过 function 关键字来定义 |
| macro | 用于定义一个方法,将生成的代码插入到程序中 |
| return | return x 会使所在的函数提前退出,并将给定的值 x 返回给调用者 |
| do | 创建一个匿名函数,并将其作为第一个参数传递给函数调用 |
| begin | begin...end 表示一段代码块 |
| end | 表示一个代码块的结束 |
| let | 会创建一个新的硬作用域,并可选地引入新的局部绑定 |
| if | if/elseif/else 用于条件判断,根据布尔表达式的值决定某段代码是否执行 |
| for | for 循环用于在遍历一个值序列时重复执行一段代码块 |
| while | while 循环会重复判断一个条件表达式,只要该表达式为 true,就持续执行循环体 |
| break | 用于立即跳出循环,不再执行循环剩余的部分 |
| continue | 用于跳过当前循环迭代的剩余部分,直接进入下一次迭代 |
| try | try/catch 语句用于捕获由 throw 抛出的错误(异常),从而使程序在发生错误时能够继续执行 |
| finally | 可以使用 finally 块在某段代码退出时执行特定代码,无论该段代码是正常结束还是因错误退出 |
| quote | quote 用于在一个代码块中创建多个表达式对象,而无需显式使用 Expr 构造函数 |
| local | local 用于显式引入一个新的局部变量 |
| global | global x 使当前作用域及其内部作用域中的 x 引用全局变量 x |
| outer | 如 for outer 用于在 for 循环中复用已存在的局部变量作为迭代变量,而不是创建新的局部变量 |
| const | 用于声明值不会改变的全局变量 |
| struct | 用于定义一种复合类型,由名称和字段组成 |
| mutable struct | 与 struct 类似,但它允许在实例创建后修改其字段的值 |
| @kwdef | 这是一个辅助宏,用于为 typedef 表达式中声明的类型(必须是 struct 或 mutable struct)自动生成基于关键字参数的构造函数 |
| abstract type | 用于声明一种无法被实例化的类型 |
| primitive type | 用于声明一种仅由一系列比特组成的具体类型 |
| where | where 关键字用于创建 UnionAll 类型,可以理解为对某个类型变量的所有取值进行迭代联合 |
| ... | 表示一组参数序列 |
| ; | 用于分隔语句、抑制该表达式的结果输出、按维度拼接数组、创建命名元组、切换到 shell 模式 |
| = | 赋值运算符,用于将右侧的值赋给左侧的变量 |
| ?: | 这是条件表达式的简写形式,称为三元运算符 |
标准模块
| 函数名 | 简介 |
| Main | Main 是顶层模块,Julia 启动时会将 Main 设置为当前模块 |
| Core | 包含 Julia 语言中所有“内置”标识符的模块,即核心语言部分而非库 |
| Base | Julia 的基础库是 Base,它是一个包含基本功能(即 base/ 目录内容)的模块 |
Base 子模块
| 函数名 | 简介 |
| Broadcast | 广播机制实现的模块 |
| Docs | Docs 模块提供了 @doc 宏,可用于为 Julia 对象设置和获取文档元数据 |
| Iterators | 用于处理迭代器的相关方法和工具主要包含在 Base.Iterators 模块中 |
| Libc | Julia 通过 Libc 模块 提供与 C 标准库(libc)的接口 |
| Meta | Julia 提供的 Meta 模块 包含一组便捷函数,用于元编程 |
| StackTraces | Julia 中用于收集和操作堆栈跟踪的工具主要包含在 Base.StackTraces 模块中,常用于错误信息的构建和调试 |
| Sys | Julia 通过 Sys 模块 提供方法来获取硬件和操作系统的信息 |
| Threads | 多线程支持 |
| GC | 包含垃圾回收(Garbage Collection)工具的模块 |
对象操作
| 函数名 | 简介 |
| === | 判断 x 和 y 是否完全相同 |
| isa | 判断 x 是否为给定类型的实例 |
| isequal | 与 == 类似,但对浮点数和缺失值的处理不同 |
| isless | 根据固定的全序关系测试 x 是否小于 y |
| isunordered | 如果 x 是一个无法用 < 进行排序的值(例如 NaN 或 missing),则返回 true |
| ifelse | 如果条件为 true,则返回 x,否则返回 y |
| typeassert | typeassert(x, type),除非 x isa type,否则抛出 TypeError |
| typeof | 获取 x 的具体类型 |
| tuple | 构造由给定对象组成的元组 |
| ntuple | 创建一个长度为 n 的元组,其中每个元素由 f(i) 计算得到,i 是该元素的索引 |
| objectid | 根据对象的身份(identity)获取 x 的哈希值 |
| hash | 计算一个整数哈希值 |
| finalizer | 注册一个函数 f(x),当对象 x 不再有程序可访问的引用时调用该函数,并返回 x |
| finalize | 立即运行为对象 x 注册的 finalizers |
| copy | 创建浅拷贝:只复制外部结构,而不复制其内部所有值 |
| deepcopy | 创建深拷贝:会递归复制所有内容,生成一个完全独立的对象 |
| getproperty | 定义或重载对象属性访问行为 |
| setproperty! | 定义或重载对象属性赋值的行为 |
| replaceproperty! | 在对象属性存在时替换其值 |
| swapproperty! | 交换对象指定属性的当前值与新值 |
| modifyproperty! | 对对象的指定属性值应用一个函数并更新该属性 |
| propertynames | 获取对象 x 的属性(x.property)组成的元组或向量 |
| hasproperty | 返回一个布尔值,表示对象 x 是否具有名为 s 的属性 |
| getfield | 从复合类型的值中按名称或位置提取字段 |
| setfield! | 将 x 赋值给复合类型值中的指定命名字段 |
| modifyfield! | 原子方式完成字段的获取和设置 |
| replacefield! | 以原子方式执行字段的获取,并在满足条件时将其设置为指定值 |
| swapfield! | 以原子方式同时执行字段的获取与设置 |
| isdefined | 测试一个全局变量或对象字段是否已定义 |
| getglobal | 从指定模块中获取绑定名称 name 的值 |
| setglobal! | 获取模块中某个绑定名称的值 |
| @isdefined | 判断变量是否在当前作用域中已定义 |
| convert | 将值转换为指定类型 |
| promote | 将所有参数转换为一个共同的类型,并以元组形式返回 |
| oftype | 将值转换为另一个值的类型 |
| widen | 返回一个“更大”的类型,保证对该类型支持的所有值进行加减运算时不会溢出或丢失精度 |
| identity | 恒等函数,返回传入的参数本身 |
| WeakRef | 创建对对象的弱引用,允许该对象被垃圾回收 |
类型的属性
类型关系
| 函数名 | 简介 |
| supertype | 返回数据类型的直接父类型 |
| Type | 一个抽象类型,包含所有类型对象 |
| DataType | 表示显式声明的具名类型,这些类型有明确的超类型和可选的参数 |
| <: | 子类型操作符,用于判断类型前者是否严格是类型后者的子类型 |
| >: | 子类型操作符,用于判断类型后者是否严格是类型前者的子类型 |
| typejoin | 返回类型的最近公共祖先 |
| typeintersect | 计算两个类型的交集类型,通常是包含两者的最小类型或接近最小的类型 |
| promote_type | 将不同类型的值转换为单一的共同类型 |
| promote_rule | 指定在对两种类型进行提升时应使用的结果类型 |
| Base.promote_typejoin | 计算一个包含两种类型的类型 |
| isdispatchtuple | 判断类型是否为元组“叶子类型” |
声明结构体
| 函数名 | 简介 |
| ismutable | 判断给定值是否为可变对象 |
| isimmutable | 判断给定值是否为不可变对象 |
| ismutabletype | 判断类型是否被声明为可变类型 |
| isabstracttype | 判断类型是否被声明为抽象类型 |
| isprimitivetype | 判断类型是否被声明为原始类型 |
| Base.issingletontype | 判断类型是否只有唯一的一个可能实例 |
| isstructtype | 判断类型是否被声明为结构体类型 |
| nameof | 获取数据类型的名称 |
| fieldnames | 获取数据类型所有字段名称组成的元组 |
| fieldname | 获取数据类型指定字段的名称 |
| fieldtype | 获取复合类型中指定字段的声明类型 |
| fieldtypes | 获取复合类型中所有字段的声明类型,返回一个元组 |
| fieldcount | 获取给定类型实例所包含的字段数量 |
| hasfield | 判断类型是否包含指定名称的字段 |
| nfields | 获取对象中字段的数量 |
| isconst | 判断指定模块中的全局变量是否被声明为常量 |
| Base.isfieldatomic | 判断指定类型的字段是否被声明为 @atomic |
内存布局
| 函数名 | 简介 |
| sizeof | 获取数据类型或对象的标准二进制表示所占的字节大小 |
| isconcretetype | 判断类型是否为具体类型 |
| isbits | 判断 x 是否属于 isbitstype 类型的实例 |
| isbitstype | 判断类型是否为“纯数据”类型 |
| fieldoffset | 获取类型中指定字段相对于数据起始位置的字节偏移量 |
| Base.datatype_alignment | 获取该类型实例在内存分配时的最小对齐字节数 |
| Base.datatype_haspadding | 判断该类型的实例字段在内存中是否紧密排列 |
| Base.datatype_pointerfree | 判断该类型的实例是否可能包含指向垃圾回收管理内存的引用 |
特殊值
| 函数名 | 简介 |
| typemin | 给定(实数)数值类型的最小可表示值 |
| typemax | 给定(实数)数值类型的最大可表示值 |
| floatmin | 返回浮点类型所能表示的最小正正规数 |
| floatmax | 返回浮点类型所能表示的最大正正规数 |
| maxintfloat | 返回给定浮点类型(默认 Float64)中能精确表示的最大连续整数值 |
| eps | 返回浮点类型的机器精度 |
| instances | 返回指定类型的所有实例集合 |
特殊类型
| 函数名 | 简介 |
| Any | 所有类型的联合类型 |
| Union | 类型联合是包含其所有参数类型实例的抽象类型 |
| Union{} | 空类型联合 |
| UnionAll | 表示对某个类型参数所有可能取值的类型联合 |
| Tuple | 元组是一种固定长度且不可变的容器,可以存放不同类型的任意值,通过索引访问元素 |
| NTuple | NTuple{N, T}表示长度为 N 且所有元素类型均为 T 的元组类型 |
| NamedTuple | 是具有唯一名称(符号表示)的元组类型集合 |
| @NamedTuple | 返回一个具有指定键名和对应类型的命名元组类型 |
| Base.@Kwargs | 根据与 @NamedTuple 相同的语法构造关键字参数的类型表示 |
| Val | 此类型用于通过值(必须是 isbits 类型或符号)在函数间传递信息 |
| Vararg | 元组类型的最后一个参数可以是特殊值 Vararg,表示任意数量的尾部元素 |
| Nothing | 没有任何字段的类型,表示 nothing 的类型 |
| isnothing | 判断是否严格等于 nothing |
| Base.notnothing | 如果 x === nothing 则抛出错误 |
| Some | 一种包装类型,用于 Union{Some{T}, Nothing} 中区分 nothing 和存在值但值为 nothing 的情况 |
| something | 返回参数中第一个不等于 nothing 的值 |
| @something | something 的短路版本,遇到第一个非 nothing 的值立即返回,无需继续检查后续参数 |
| Base.Enums.Enum | 由 @enum 定义的所有枚举类型的抽象超类型 |
| Base.Enums.@enum | 创建一个枚举类型 |
| Expr | 表示 Julia 解析代码中的复合表达式(抽象语法树,AST)的类型 |
| Symbol | 用于表示 Julia 解析代码中标识符的类型 |
| Module | 是一个独立的全局变量工作空间 |
通用函数
| 函数名 | 简介 |
| Function | 所有函数的抽象类型 |
| hasmethod | 判断指定的函数是否存在与给定参数类型匹配的方法 |
| applicable | 判断指定的函数是否存在适用于给定参数的方法 |
| Base.isambiguous | 判断两个方法是否可能因某些调用签名而产生二义性 |
| invoke | 调用函数中与指定类型匹配的方法 |
| @invoke | 提供简化语法,方便调用指定类型的方法 |
| invokelatest | 保证调用函数的最新版本,避免执行过时的方法 |
| @invokelatest | invokelatest 的便捷用法 |
| new | 内构造函数中使用的特殊函数,用于创建该类型的新实例 |
| |> | 中缀操作符,将函数 f 应用于参数 x,使得 f(g(x)) 可写成 x |> g |> f。 |
| ∘ | 函数复合,即 (f ∘ g)(args...; kwargs...) 表示先调用 g,再将结果传入 f |
| ComposedFunction | 表示两个可调用对象的函数复合 |
| splat | 将多参数函数转换为接受单个参数(元组)并展开调用的新函数,方便在需要单参数函数但传入元组的场景下使用 |
| Base.Fix1 | 表示对二元函数的部分应用,将第一个参数固定为某值 |
| Base.Fix2 | 表示对二元函数的部分应用,将第二个参数固定为某值 |
语法
| 函数名 | 简介 |
| eval | 在指定模块中执行表达式并返回结果 |
| eval | 在包含该表达式的模块的全局作用域中执行表达式并返回结果 |
| @eval | 使用 eval 执行带有插值的表达式。如果提供两个参数,第一个参数指定在哪个模块中执行 |
| evalfile | 使用 include 将文件加载到一个匿名模块中,执行文件中的所有表达式,并返回最后一个表达式的值 |
| esc | 仅在宏返回的表达式(Expr)上下文中有效 |
| @inbounds | 在表达式中消除数组边界检查 |
| @boundscheck | 将表达式块标记为边界检查块,允许被 @inbounds 宏忽略边界检查 |
| Base.@propagate_inbounds | 指示编译器内联函数,同时保留调用者的 @inbounds 上下文 |
| @inline | 向编译器提示该函数值得进行内联优化 |
| @noinline | 向编译器提示该函数不应被内联 |
| @nospecialize | 应用于函数参数,提示编译器该参数的方法实现不针对不同类型进行特化,而是使用声明的参数类型 |
| @specialize | 将参数的特化提示重置为默认设置 |
| Base.@nospecializeinfer | 告诉编译器在类型推断时,针对使用 @nospecialize 标记的参数,使用其声明类型进行推断,从而减少编译器生成的特化版本数量 |
| Base.@constprop | 控制被注解函数的过程间常量传播模式 |
| gensym | 生成一个不会与同一模块中其他变量名冲突的唯一 Symbol 符号 |
| @gensym | 为变量生成一个唯一的 gensym 符号 |
| var"name" | 语法 var"#example#" 用于引用名为 Symbol("#example#") 的变量 |
| @goto | @goto name 会无条件跳转到标记为 @label name 的语句位置 |
| @label | 用符号标签 name 标记一条语句,作为无条件跳转 @goto name 的目标位置 |
| @simd | 为 for 循环添加注解,允许编译器在优化时对循环进行更自由的重排 |
| @polly | 指示编译器对函数应用多面体优化器(Polly) |
| @generated | @generated 用于标注生成函数 |
| Base.@assume_effects | 覆盖编译器对指定方法或外部调用的副作用建模 |
| @deprecate | 标记旧方法为已废弃,并指定替代调用 new,同时根据给定签名定义新的旧方法 |
缺失值
| 函数名 | 简介 |
| Missing | 无字段的类型,其单例实例 missing 用于表示缺失值 |
| missing | 类型 Missing 的单例实例,用于表示缺失值 |
| coalesce | 返回参数中第一个不等于 missing 的值,否则返回 missing |
| @coalesce | 遇到第一个非 missing 的值立即返回,无需继续检查后续参数 |
| ismissing | 判断 x 是否为 missing |
| skipmissing | 返回一个迭代器,用于遍历 itr 中非 missing 的元素 |
| nonmissingtype | 如果类型包含 Missing,则返回一个移除 Missing 后的新类型 |
系统
| 函数名 | 简介 |
| run | 执行用反引号构造的命令对象 |
| devnull | 用于流重定向时丢弃所有写入的数据,功能相当于 Unix 系统中的 /dev/null 或 Windows 系统中的 NUL |
| success | 执行用反引号构造的命令对象,并返回是否成功 |
| process_running | 判断一个进程是否正在运行 |
| process_exited | 判断一个进程是否已经退出 |
| kill | 向进程发送信号,默认是终止进程 |
| Base.Sys.set_process_title | 设置进程标题 |
| ignorestatus | 将命令对象标记为即使返回非零结果码,执行时也不会抛出错误 |
| detach | 将命令对象标记为在新的进程组中运行,使其能独立于 Julia 进程存在,且不会收到 Ctrl-C 中断信号 |
| Cmd | 构造一个新的命令对象(Cmd),表示外部程序及其参数,同时可通过可选关键字参数修改相关设置 |
| setenv | 设置运行指定命令时使用的环境变量 |
| addenv | 将新的环境变量映射合并到指定的命令对象中,返回一个新的命令对象 |
| withenv | 在临时修改过的环境中执行函数,修改通过零个或多个的参数传入 |
| setcpuaffinity | 通过指定的 CPU ID 列表设置命令的 CPU 亲和性 |
| pipeline | 创建一个从数据源到目标的管道连接 |
| Base.Libc.gethostname | 获取本机的主机名 |
| Base.Libc.getpid | 获取当前 Julia 进程的进程 ID |
| Base.Libc.time() | 获取自 epoch 以来的系统时间 |
| time_ns | 获取系统时间的纳秒数 |
| @time | 用于执行表达式,打印执行时间、内存分配次数以及分配的总字节数,并返回表达式结果 |
| @showtime | 类似 @time,但会额外打印被执行的表达式,便于参考 |
| @timev | 这是 @time 宏的详细版本,先打印与 @time 相同的信息,再打印所有非零的内存分配计数,最后返回表达式的结果 |
| @timed | 用于执行表达式并返回表达式结果、执行时间、总分配字节数、垃圾回收时间,以及包含各种内存分配计数的对象 |
| @elapsed | 用于执行表达式并丢弃结果,返回执行所用的时间(秒),以浮点数形式表示 |
| @allocated | 用于执行表达式并丢弃结果,返回执行过程中分配的总字节数 |
| @allocations | 用于执行表达式并丢弃结果,返回执行过程中发生的内存分配次数 |
| Base.EnvDict | 该类型的单例对象提供对环境变量的哈希表接口 |
| ENV | 对单例对象 EnvDict 的引用,提供系统环境变量的字典接口 |
| Base.Sys.STDLIB | 包含标准库包所在目录完整路径的字符串 |
| Base.Sys.isunix | 用于判断操作系统是否提供类 Unix 接口 |
| Base.Sys.isapple | 用于判断操作系统是否为 Apple Macintosh OS X 或 Darwin 衍生版本 |
| Base.Sys.islinux | 用于判断操作系统是否为 Linux 衍生版本 |
| Base.Sys.isbsd | 用于判断操作系统是否为 BSD 衍生版本 |
| Base.Sys.isfreebsd | 用于判断操作系统是否为 FreeBSD 衍生版本 |
| Base.Sys.isopenbsd | 用于判断操作系统是否为 OpenBSD 衍生版本 |
| Base.Sys.isnetbsd | 用于判断操作系统是否为 NetBSD 衍生版本 |
| Base.Sys.isdragonfly | 用于判断操作系统是否为 DragonFly BSD 衍生版本 |
| Base.Sys.iswindows | 用于判断操作系统是否为 Microsoft Windows NT 衍生版本 |
| Base.Sys.windows_version | 返回 Windows NT 内核的版本号,类型为 VersionNumber |
| Base.Sys.free_memory | 获取系统中可用的总内存大小(字节) |
| Base.Sys.total_memory | 获取系统中总的物理内存大小(字节),包括已使用的部分 |
| Base.Sys.free_physical_memory | 获取系统当前的可用空闲内存大小(字节) |
| Base.Sys.total_physical_memory | 获取系统物理内存总大小(字节),包含已使用和未使用部分 |
| Base.Sys.uptime | 获取系统当前运行时间(秒) |
| Base.Sys.isjsvm | 用于判断 Julia 是否运行在 JavaScript 虚拟机(JSVM)中 |
| Base.Sys.loadavg | 获取系统负载平均值 |
| Base.Sys.isexecutable | 判断指定路径是否具有可执行权限 |
| @static | 在解析阶段对表达式进行部分求值 |
版本信息
| 函数名 | 简介 |
| VersionNumber | 遵循语义化版本规范(semver)的版本号类型,由主版本号、次版本号和补丁号组成,后可跟预发布和构建的字母数字标识 |
| @v_str | 用于将字符串解析为 VersionNumber 的字符串宏 |
错误
| 函数名 | 简介 |
| error | 抛出带有指定消息的错误异常 |
| throw | 抛出一个对象作为异常 |
| rethrow | 在 catch 块内重新抛出当前异常,使其继续传播 |
| backtrace | 获取当前程序执行点的堆栈跟踪对象 |
| catch_backtrace | 获取当前异常的堆栈跟踪信息,通常在 catch 块中使用 |
| current_exceptions | 获取当前正在处理的异常堆栈 |
| @assert | 当条件 cond 为假时,抛出错误 AssertionError |
| Base.Experimental.register_error_hint | 注册一个“提示”函数,用于为用户提供可能的错误解决建议 |
| Base.Experimental.show_error_hints | 调用针对异常类型注册的所有提示处理函数,args 包含该类型处理函数所需的其他参数 |
| ArgumentError | 传递给函数的参数无效 |
| AssertionError | 判定条件未被满足 |
| BoundsError | 对数组的索引操作尝试访问超出边界的元素 |
| CompositeException | 将任务抛出的异常向量,封装为包含异常序列信息的对象 |
| DimensionMismatch | 调用的对象维度不匹配 |
| DivideError | 尝试进行整数除法时,分母为零 |
| DomainError | 传递给函数或构造函数的参数值超出有效范围 |
| EOFError | 文件或流中没有更多可读取的数据 |
| ErrorException | 通用错误类型 |
| InexactError | 无法在函数的某个方法中将值 val 精确转换为类型 T |
| InterruptException | 进程被终端中断信号(CTRL+C)终止 |
| KeyError | 对抽象字典(如 Dict)或集合(Set)类型进行索引操作时,尝试访问或删除不存在的元素 |
| LoadError | 在执行 include、require 或 using 文件时发生错误,具体错误信息存储在 .error 字段中 |
| MethodError | 指定函数中不存在匹配的类型签名的方法,或者没有唯一的最具体方法 |
| MissingException | 当遇到不支持缺失值的情况时抛出的异常 |
| OutOfMemoryError | 操作分配的内存超过系统或垃圾回收器的处理能力 |
| ReadOnlyMemoryError | 尝试写入只读内存时发生的错误 |
| OverflowError | 表达式结果超出指定类型的表示范围,导致溢出 |
| ProcessFailedException | 表示进程异常退出状态,运行命令或管道时返回非零退出码时抛出 |
| TaskFailedException | 任务失败时抛出,封装失败的任务 |
| StackOverflowError | 函数调用栈溢出,通常因无限递归导致 |
| SystemError | 系统调用失败,带有错误码 |
| TypeError | 类型判定失败,或内置函数接收了错误类型的参数 |
| UndefKeywordError | 函数调用时缺少必需的关键字参数 |
| UndefRefError | 对象不存在指定的元素或字段 |
| UndefVarError | 当前作用域中符号未定义 |
| StringIndexError | 尝试访问字符串中无效索引时发生的错误 |
| InitError | 模块的 __init__ 函数运行时发生错误 |
| retry | 返回一个匿名函数,该函数调用指定函数 |
| ExponentialBackOff | 生成一个长度为 n 的 Float64 迭代器 |
事件
| 函数名 | 简介 |
| Timer | 创建一个定时器,在每次定时器触发时执行指定的回调函数 |
| Base.AsyncCondition | 创建一个异步条件变量,当条件满足时调用指定的回调函数 |
反射
| 函数名 | 简介 |
| nameof | 获取模块的名称,类型为符号(Symbol) |
| parentmodule | 获取模块的上级模块 |
| pathof | 返回导入模块对应的 m.jl 文件路径 |
| pkgdir | 返回声明模块的包的根目录 |
| pkgversion | 返回导入模块的包的版本 |
| Base.moduleroot | 查找给定模块的根模块 |
| __module__ | 宏内部可见参数,提供宏调用展开上下文的模块信息 |
| __source__ | 宏内部可见参数,提供宏调用处的解析器位置信息(行号节点) |
| @__MODULE__ | 用于获取当前顶层 eval 所在的模块 |
| @__FILE__ | 展开为包含宏调用所在文件路径的字符串 |
| @__DIR__ | 展开为包含宏调用所在文件目录的绝对路径字符串 |
| @__LINE__ | 展开为宏调用所在的行号 |
| fullname | 获取模块的全名,返回符号元组 |
| names | 获取模块导出的名称数组 |
| nameof | 获取函数的名称(符号) |
| functionloc | 返回函数或方法定义的位置 |
| Base.@locals | 构造一个字典,包含调用位置处所有已定义局部变量的名称(符号)及其对应的值 |
代码加载
| 函数名 | 简介 |
| Base.identify_package | 根据名称从当前环境栈中查找包,返回其 PkgId |
| Base.locate_package | 返回与包标识符对应的入口文件路径 |
| Base.require | 该函数是 using / import 的实现部分 |
| Base.compilecache | 为模块及其所有依赖创建预编译缓存文件,用于减少包加载时间 |
| Base.isprecompiled | 判断给定包是否已在当前激活项目中被预编译 |
| Base.get_extension | 获取父模块中指定扩展模块 |
内部工具
| 函数名 | 简介 |
| Base.GC.gc | 执行垃圾回收 |
| Base.GC.enable | 控制垃圾回收是否启用,传入布尔值,返回之前的状态 |
| Base.GC.@preserve | 标记指定对象在表达式执行期间被使用,通常用于不安全代码中防止资源被回收 |
| Base.GC.safepoint | 在程序中插入一个垃圾回收可能运行的点 |
| Base.GC.enable_logging | 开启后,会将每次垃圾回收的统计信息打印到标准错误输出 |
| Meta.lower | 将表达式转换为在指定模块中执行的等效低级形式表达式 |
| Meta.@lower | 将表达式转换为在指定模块中执行的低级形式 |
| parse | 解析表达式字符串并返回一个表达式,该表达式可用于后续执行 |
| Meta.ParseError | 表示传递给解析函数的表达式无法被识别为有效的 Julia 表达式时产生的错误类型 |
| QuoteNode | 表示一段带引号的代码片段,不支持插值操作 |
| macroexpand | 将表达式中的所有宏展开,返回不含宏的等效表达式 |
| @macroexpand | 返回展开后不含任何宏的等效表达式 |
| @macroexpand1 | 非递归版本的 @macroexpand |
| code_lowered | 返回与指定函数和类型签名匹配的方法的所有低级形式的数组 |
| code_typed | 返回与指定函数和类型签名匹配的方法的类型推断后的低级形式数组 |
| precompile | 对给定函数按照指定参数类型进行编译,但不执行该函数 |
| Base.jit_total_bytes | 返回即时编译器为本地代码和数据分配的总内存字节数 |
元编程
| 函数名 | 简介 |
| Meta.quot | 对表达式进行引用,生成带有“quote”头部的表达式 |
| Meta.isexpr | 判断给定表达式是否为指定类型头部的表达式 |
| Meta.isidentifier | 判断给定的符号或字符串是否包含符合 Julia 普通标识符规则的字符 |
| Meta.isoperator | 判断符号是否可用作运算符,返回布尔值 |
| Meta.isunaryoperator | 判断符号是否可用作一元(前缀)运算符,返回布尔值 |
| Meta.isbinaryoperator | 判断符号是否可用作二元(中缀)运算符,返回布尔值 |
| Meta.show_sexpr | 将表达式以类 Lisp 的 S 表达式 形式显示 |