-
方法定义:
- 函数方法:使用函数
methods
julia> methods(sin) # 12 methods for generic function "sin": [...] julia> methods(sin, Tuple{Real}) # 指定参数类型 # 4 methods for generic function "sin": [...]
- 构造函数:使用函数
methods
julia> methods(Int) # 14 methods for generic function "(::Type)": [...]
- 函子方法:对于
DataType
和UnionAll
类型的类型的方法有所不同,先引入 文档中的Polynomial
定义
julia> struct Polynomial{R} coeffs::Vector{R} end julia> function (p::Polynomial)(x) v = p.coeffs[end] for i = (length(p.coeffs)-1):-1:1 v = v*x + p.coeffs[i] end return v end julia> (Polynomial isa UnionAll) & (Polynomial{Int} isa DataType) true julia> Polynomial.body.name.mt # UnionAll 类型的类型 # 1 method for generic function "(::Polynomial)": [1] (p::Polynomial)(x) in Main at REPL[37]:2 julia> Polynomial{Int}.name.mt # DataType 类型的类型 # 1 method for generic function "(::Polynomial)": [1] (p::Polynomial)(x) in Main at REPL[37]:2
- 函数方法:使用函数
-
源代码:
- 查找定义:使用函数
which
或宏@which
julia> @which sin # 对变量使用返回其定义所处的模块 Base julia> @which sin(1) # 对函数调用使用返回方法 sin(x::Real) in Base.Math at special/trig.jl:53
- 浏览定义:使用函数
less
或宏@less
julia> @less sin(1)
- 编辑定义:使用函数
edit
或宏@edit
julia> @edit sin(1)
- 查找定义:使用函数
-
字段:
- 类型字段:
julia> fieldcount(Complex{Int}) # 字段数量 2 julia> fieldnames(Complex{Int}) # 各个字段名称 (:re, :im) julia> fieldname(Complex{Int}, 1) # 第一个字段的名称 :re julia> fieldtypes(Complex{Int}) # 各个字段的类型 (Int64, Int64) julia> fieldtype(Complex{Int}, 1) # 第一个字段的类型 Int64
- 变量字段:
julia> a = 0 + im 0 + 1im julia> getfield(a, :re) 0 julia> getfield(a, 1) 0
-
模块:
julia> names(Base) # 获取模块内的所有标识符
883-element Array{Symbol,1}:
[...]
julia> getfield(Base, :+) # 获取模块的指定标识符
+ (generic function with 161 methods)
julia> [n for n in (getfield(Core, s) for s in names(Core))
if n isa Type] # 列出模块 Core 中的所有类型
77-element Array{Type,1}:
[...]
julia> [n for n in (getfield(Core, s) for s in names(Core))
if n isa Function] # 列出模块 Core 中的所有函数
16-element Array{Function,1}:
[...]