如何查看Julia模块所有函数?解析LinearAlgebra末尾特殊运算符
Julia LinearAlgebra模块末尾特殊运算符解析
问题背景
查看LinearAlgebra模块的所有名称时,末尾两个特殊运算符在命令行无法正常显示,结合测试代码的报错信息,需明确这两个运算符的具体内容:
原始代码输出
julia> using LinearAlgebra; a = [b; for b in names(LinearAlgebra)] 131-element Vector{Symbol}: :/ :Adjoint :BLAS :Bidiagonal :BunchKaufman :Cholesky :CholeskyPivoted :ColumnNorm :Diagonal :Eigen :Factorization :GeneralizedEigen :GeneralizedSVD :GeneralizedSchur :Hermitian :Hessenberg :I ⋮ :schur :schur! :svd :svd! :svdvals :svdvals! :sylvester :tr :transpose :transpose! :tril :tril! :triu :triu! :× :⋅
测试报错代码
julia> Unicode.julia_chartransform(eval(a[end])) ERROR: MethodError: no method matching julia_chartransform(::typeof(dot)) Closest candidates are: julia_chartransform(::UInt32) @ Unicode C:\Users\Admin\Desktop\Desktop 01092021\Dld\julia-1.9.3\share\julia\stdlib\v1.9\Unicode\src\Unicode.jl:47 julia_chartransform(::Integer) @ Unicode C:\Users\Admin\Desktop\Desktop 01092021\Dld\julia-1.9.3\share\julia\stdlib\v1.9\Unicode\src\Unicode.jl:48 julia_chartransform(::Char) @ Unicode C:\Users\Admin\Desktop\Desktop 01092021\Dld\julia-1.9.3\share\julia\stdlib\v1.9\Unicode\src\Unicode.jl:49 Stacktrace: [1] top-level scope @ REPL[98]:1 julia> Unicode.julia_chartransform(eval(a[end-1])) ERROR: MethodError: no method matching julia_chartransform(::typeof(cross)) Closest candidates are: julia_chartransform(::UInt32) @ Unicode C:\Users\Admin\Desktop\Desktop 01092021\Dld\julia-1.9.3\share\julia\stdlib\v1.9\Unicode\src\Unicode.jl:47 julia_chartransform(::Integer) @ Unicode C:\Users\Admin\Desktop\Desktop 01092021\Dld\julia-1.9.3\share\julia\stdlib\v1.9\Unicode\src\Unicode.jl:48 julia_chartransform(::Char) @ Unicode C:\Users\Admin\Desktop\Desktop 01092021\Dld\julia-1.9.3\share\julia\stdlib\v1.9\Unicode\src\Unicode.jl:49 Stacktrace: [1] top-level scope @ REPL[99]:1
明确解析
这两个特殊运算符及其对应功能如下:
- 倒数第二个运算符
:×:对应LinearAlgebra中的cross函数,即向量叉乘运算符。报错信息显示eval(a[end-1])返回typeof(cross),说明该符号是叉乘的Unicode表示。 - 最后一个运算符
:⋅:对应LinearAlgebra中的dot函数,即向量点积运算符。报错信息显示eval(a[end])返回typeof(dot),说明该符号是点积的Unicode表示。
报错原因是Unicode.julia_chartransform函数仅支持处理UInt32、整数或Char类型参数,而eval(a[end])和eval(a[end-1])返回的是函数类型,不符合参数要求,因此触发MethodError。
内容的提问来源于stack exchange,提问作者Vinod
相关产品推荐
相关产品推荐

