抽象类型
常见抽象类型:
Any
最广义的抽象类型Number
数Real
实数Integar
整数Signed
有符号整数Unsigned
无符号整数Abstract啥
其它抽象类型,啥
包括Float
、Array
、Char
……
可以用<:
标记抽象类型从属关系,例如Integar <: Real
,有逆向操作>:
,可以串联,<: Any
可以省略
自定义抽象类型例子:
abstract type MyNumType <: Number end
原始类型定义例子:
primitive type MyChar <: AbstractChar 8#= 占用比特数,暂时只能为8的倍数 =# end
普通结构体
基本格式例子
struct a
x::Int# 标记类型
y
end
- 使用
a.x
,a.y
访问元素 - 如果要求结构体可修改,应在
struct
前加上mutable
- 内部构造函数:名字为结构体名,可以调用一个特殊函数
new
,参数依次为各个元素 - 外部构造函数:可以调用特殊函数,名字为结构体名,如果没有内部构造函数,会自动生成
示例
mutable struct Three
x::Int
y::Int
z::Int
function Three()
return new(0,0,0)
end
end
function CreateThree(i::Int)
t=Three()
t.x=i
return t
end
泛型
结构体格式例子
struct a{W} where Integar <: W <: Number# 如果是<:Any,可以省略
x::W
y
z::AbstractVector{W}
end
函数格式
function d(m::a{W}) where W <: Real
println(m.y)
end
示例
mutable struct Cat{T} where T <: AbstractString
id::UInt
name::T
food::AbstractVector{T}
end
function getid(Winter::Cat{T}) where T <: AbstractString
return Winter.id
end