说明:本文纯属画蛇添脚,饭后自娱自乐
class的作用就是把数据和方法包装在一起。
julia中只有struct,但是stuct支持的数据类型有限,而且不能直接定义function。
曲线救国:
用命名元组来实现,并且是可变元组,也就是变量的字段用Ref类型。
示例如下:
function myclass(val1, val2)
#tp是一个命名数组,只是它的字段1和字段2是Ref类型,通过.x来读取和修改属性值
tp = (
#字段1
a = val1 |> Ref,
#字段2
b = val2 |> Ref,
#Set a
set_a = (val,this)->this.a.x = val,
#Get a
get_a = (this)->this.a.x,
#方法:返回 a+b
add = (this) -> this.a.x + this.b.x,
#其它方法
)
end
#生成【myclass】对象
obj1 = myclass(399.0,500.0)
#读取属性值
obj1.get_a(obj1)
obj1.a.x #和上面的代码等效
#设置属性值
obj1.set_a(599.0,obj1)
obj1.a.x = 599 #和上面的代码等效
#调用其他方法
obj1.add(obj1)
问题:this自动引用没法解决......
本文纯属画蛇添脚,饭后自娱自乐,julia的函数是一等公民,一定适应julia的正确打开方式。
想在julia里面使用oop的同学,应该反思一下自己的业务模型设计和程序功能划分。
网友评论