美文网首页
在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