美文网首页
在julia中实现class的功能

在julia中实现class的功能

作者: 昵称违法 | 来源:发表于2021-07-06 18:40 被阅读0次

说明:本文纯属画蛇添脚,饭后自娱自乐

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的同学,应该反思一下自己的业务模型设计和程序功能划分。

相关文章

网友评论

      本文标题:在julia中实现class的功能

      本文链接:https://www.haomeiwen.com/subject/ezngultx.html