1. struct:自定义复合数据结构
在系列2中,我们知道了julia中的struct可以封装多个基本数据结构:

2. 用外部函数模拟class
我们可以用将class的函数定义在外部,调用时将实例作为参数传入函数即可,如下例子:
using Classes
@class mutable Fruit begin
x::Int
Fruit() = Fruit(0)
end
function eat(self::AbstractFruit)
println("eating ",self.x)
end
f = Fruit()
f.x = 10
eat(f)
下面是另一个例子,是个initialization的例子:
struct Foo
var1
var2
matrix
end
Foo(a,b) = Foo(a,b,zeros(a,b))
initialization也可以使用new函数,放在struct内部。有三种方式,第一种是new并放在前面(可变参数)
struct Foo
var1
var2
matrix
Foo(a,b,m=zeros(a,b)) = new(a,b,m)
end
第二种是new并放在后面(重载)
struct Foo
var1
var2
matrix
Foo(a,b) = new(a,b,zeros(a,b))
end
第三种是使用@kwdef
julia> B

文章介绍了Julia语言中使用struct创建自定义复合数据结构,以及如何通过外部函数模拟class的功能。还讨论了不同类型的初始化方法,包括使用new关键字和@kwdef宏。此外,提到了使用第三方库Classes来实现类的功能,并展示了Foo和Bar类的定义及其构造器和方法。
最低0.47元/天 解锁文章
28

被折叠的 条评论
为什么被折叠?



