Julia passes arrays by reference and always has:
http://julia.readthedocs.org/en/latest/manual/arrays/#multi-dimensional-arrays

On Fri, Dec 26, 2014 at 2:49 PM, Bradley Setzler <[email protected]>
wrote:

> Hi,
>
> I cannot explain this behavior. I apply a function to a variable in the
> workspace, the function initializes its local variable at the workspace
> variable, then modifies the local variable and produces the desired output.
> However, it turns out the Julia modifies both the local and workspace
> variable with each operation on the local variable. Only the local variable
> is supposed to be modified.
>
> *This is very dangerous behavior, as Julia is modifying the data itself
> between performing operations on the data; the data itself is supposed to
> remain fixed between operations on it.*
>
> *Minimal working example:*
>
> data=[1,2,3]
> function square(arg)
>     inner_var = arg
>     for i=1:length(inner_var)
>         inner_var[i] = inner_var[i]^2
>     end
>     return inner_var
> end
> output=square(data)
>
> julia> print(data)
>
> [1,4,9]
>
> The data has been squared due to the local variable, which was initialized
> at the data values, being squared. Now, if i wish to apply a different
> function to the data, the result will be incorrect because the data has
> been modified unintentionally.
>
> How long has Julia been doing this? Was this behavior intentional?
> Bradley
>
>
>

Reply via email to