do this

b = [1:5]
f(x) = x + 5
map!(f, b)

On Thursday, May 1, 2014 9:03:35 PM UTC+8, Kevin Squire wrote:
>
> b[:] = b .+ 5
>
> has the behavior that you want. However, it  creates a copy, does the 
> addition, then copies the result back into b. 
>
> So, looping (aka devectorizing) would generally be faster. For simple 
> expressions like these, though, the Devectorize.jl package should allow you 
> to write 
>
> @devec b[:] = b .+ 5
>
> It then rewrites the expression as a loop. It isn't able to recognize some 
> expressions, though (especially complex ones), so YMMV. 
>
> (Actually, it may not work with ".+", since that is a relatively new 
> change in the language. If you check and it doesn't, try submitting a 
> github issue, or just report back here.)
>
> Cheers!  Kevin 
>
> On Thursday, May 1, 2014, Kaj Wiik <kaj....@gmail.com <javascript:>> 
> wrote:
>
>> OK, thanks, makes sense. But how to change the original instance, is 
>> looping the only way?
>>
>> On Thursday, May 1, 2014 3:12:51 PM UTC+3, Freddy Chua wrote:
>>
>> b = b .+ 5 
>>
>> creates a new instance of an array, so the original array pointed to by 
>> "b" is not changed at all.
>>
>>
>>
>> On Thursday, May 1, 2014 7:39:14 PM UTC+8, Kaj Wiik wrote:
>>
>> As a new user I was surprised that even if you change the value of 
>> function arguments (inside the function) the changes are not always visible 
>> outside but in some cases they are.
>>
>> Here's an example:
>>
>> function vappu!(a,b)
>>        a[3]=100
>>        b = b .+ 5
>>        (a,b)
>> end
>>
>> c = [1:5]
>> d = [1:5]
>>
>> vappu!(c,d)
>> ([1,2,100,4,5],[6,7,8,9,10])
>>
>> c
>> 5-element Array{Int64,1}:
>>    1
>>    2
>>  100
>>    4
>>    5
>> d
>> 5-element Array{Int64,1}:
>>  1
>>  2
>>  3
>>  4
>>  5
>>
>>

Reply via email to