如何把引用作为结构体成员?

如下代码:

struct BigGuy
    a::Int
    b::Int
    # ... more members
end

struct Token
    id::Int
    big_guy::BigGuy
end

我不想 Token 里有一个完整的 BigGuy 副本,想存的是BigGuy的链接,不然太浪费内存了,应该怎么做呢?还是说Token里的big_guy本来就是引用,并不会开辟 sizeof(Int) + sizeof(BigGuy)大小的空间? Ptr{}是干这个的么?

我还是带有C/C++指针的思维,还没能完全转换过来 :sob:,希望有人给我讲讲,让我完整地过渡到Julia上。 :pray:
通过官方文档我能明白对于函数是类似引用的,结构体构造函数其实也是函数,所以除了初次构造,只要用了就都是引用是么?

是这样的,各种array结构都是这样使用的,比如说 OffsetArray 就是对原始矩阵封装了一个offset

1 个赞

我还是带有C/C++指针的思维

??? 你可以去查查Java的函数参数传递,Python也是差不多的

写C++的时候都是自己分配内存,决定是否对值进行拷贝,用Julia后这事不要我管了就不太习惯 :joy: