On Sat, Oct 3, 2015 at 1:36 PM, Carlo Lucibello
<[email protected]> wrote:
> Ok, thanks, we are getting closer to what I need, but still...
>
> julia> a=1
> 1
> julia> b=Ref(a)
> Base.RefValue{Int64}(1)
> julia> b[]+=3
> 4
> julia> a
> 1
>
> while I was expecting a==4

This is not allowed. All the assignments has to be explicit and you
should either just use `b[]` to replace `a` or update `a` with `a =
b[]`.

>
> Il giorno sab 3 ott 2015 alle ore 19:16 Yichao Yu <[email protected]> ha
> scritto:
>>
>> On Sat, Oct 3, 2015 at 12:48 PM, Carlo Lucibello
>> <[email protected]> wrote:
>> > Those don't seem to be viable solutions. In fact
>> >
>> > julia> a=2
>> > 2
>> >
>> > julia> b=Ref(a)
>> > Base.RefValue{Int64}(2)
>> >
>> > julia> b += 3
>> > ERROR: MethodError: `+` has no method matching +(::Base.RefValue{Int64},
>> > ::Int64)
>>
>> b[] += 3
>>
>> >
>> > and also how do you define a 0-dimensional array?
>> >
>> > a=Array{Float64,0}()
>> > ERROR: MethodError: `convert` has no method matching
>> > convert(::Type{Array{Float64,0}})
>> > This may have arisen from a call to the constructor
>> > Array{Float64,0}(...),
>> > since type constructors fall back to convert methods.
>> >
>> >
>> >
>> > Il giorno sabato 3 ottobre 2015 18:07:51 UTC+2, Jameson ha scritto:
>> >>
>> >> the `Ref` type or the single-valued `Array{T,0}` provides this ability
>> >> for
>> >> Julia.
>> >>
>> >> On Fri, Oct 2, 2015 at 5:10 PM Carlo Lucibello <[email protected]>
>> >> wrote:
>> >>>
>> >>> Hi julians,
>> >>> I'd like to emulate the following behaviour from C++
>> >>>
>> >>> class A{
>> >>> public:
>> >>>     double x;
>> >>> }
>> >>>
>> >>> class B{
>> >>> public:
>> >>>     double& x;
>> >>> }
>> >>> A a(1);
>> >>> B b(a.x);
>> >>> a.x=2;
>> >>> assert(b.x == 2);
>> >>>
>> >>> Whilie it would be easy to obtain this behaviour with `composite`
>> >>> types,
>> >>> since they are passed by referece, for elementary types, such as
>> >>> Float64,
>> >>> thi is not possible since they have a sort of by vlue semantic (yes, I
>> >>> know
>> >>> it's not exactly like that, but still...)
>> >>>
>> >>> Greetings,
>> >>> Carlo

Reply via email to