Julia: 引用与copy: 关于数组、自定义类型与初始化

1、关于数组赋值,显然是指向同一对象的引用。

julia> a =[1,2,3]
3-element Array{Int64,1}:
 1
 2
 3

julia> d =Array{Array{Int64,1},1}()
0-element Array{Array{Int64,1},1}

julia> push!(d,a)
1-element Array{Array{Int64,1},1}:
 [1,2,3]

julia> b =a
3-element Array{Int64,1}:
 1
 2
 3
julia> push!(a,4)
4-element Array{Int64,1}:
 1
 2
 3
 4

查看变量d,已经发生了变化!

julia> d
1-element Array{Array{Int64,1},1}:
 [1,2,3,4]

2、 如果对于自定义的类型,比如foo,情况会如何?

  julia> type foo
            name::ASCIIString
            old::Float64
            foo() =new();
       end

对foo进行赋值

julia> f1 =foo()
foo(#undef,0.0)

julia> f1.name ="sh"
"sh"

julia> f1.old =28.0
28.0
julia> f2=f1
foo("sh",28.0)

julia> e =foo[]
0-element Array{foo,1}

julia> push!(e,f1)
1-element Array{foo,1}:
 foo("sh",28.0)

julia> f2.name ="bj"
"bj"

再查看一下e 和f1=>

julia> e
1-element Array{foo,1}:
 foo("bj",28.0)

julia> f1
foo("bj",28.0)

3、注意,如果f1进行初始化后,此时是COPY!,并不影响f2 和e.

julia> f1=foo()
foo(#undef,1.0953763033e-314)

julia> f2
foo("bj",28.0)

julia> e
1-element Array{foo,1}:
foo("bj",28.0)

其它类型初始化?

julia> g=e
1-element Array{foo,1}:
 foo("bj",28.0)

julia> e=foo[];

结果,也相同。

julia> g
1-element Array{foo,1}:
 foo("bj",28.0)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值