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