Hello,

Is there any difference besides the obvious one that assigning to a slice
modifies the array? What I mean is, is there a difference in the internals
or how it works that I should be aware of? Up until this thread I had been
under the impression that a slice was a type of link/alias to the original
array, and that's still my mental picture of how assignment to a slice
works.

Thanks.


On 8 March 2016 at 04:02, Stefan Karpinski <[email protected]> wrote:

> Assigning to slice is quite different from taking a slice.
>
> On Mon, Mar 7, 2016 at 9:49 PM, Daniel Carrera <[email protected]> wrote:
>
>> That is not literally true:
>>
>> vals[2:3] = vals[3:4]
>>
>>
>> On Tuesday, 8 March 2016 02:37:26 UTC+1, John Myles White wrote:
>>>
>>> Array indexing produces a brand new array that has literally no
>>> relationship with the source array.
>>>
>>>  -- John
>>>
>>> On Monday, March 7, 2016 at 5:21:34 PM UTC-8, Daniel Carrera wrote:
>>>>
>>>> Hello,
>>>>
>>>> Some Julia functions act on their inputs. For example:
>>>>
>>>> julia> vals = [6,5,4,3]
>>>> 4-element Array{Int64,1}:
>>>>  6
>>>>  5
>>>>  4
>>>>  3
>>>>
>>>> julia> sort!(vals);
>>>>
>>>> julia> vals
>>>> 4-element Array{Int64,1}:
>>>>  3
>>>>  4
>>>>  5
>>>>  6
>>>>
>>>>
>>>> However, it looks like these functions do not modify array slices:
>>>>
>>>> julia> vals = [6,5,4,3]
>>>> 4-element Array{Int64,1}:
>>>>  6
>>>>  5
>>>>  4
>>>>  3
>>>>
>>>> julia> sort!(vals[2:end])
>>>> 3-element Array{Int64,1}:
>>>>  3
>>>>  4
>>>>  5
>>>>
>>>> julia> vals
>>>> 4-element Array{Int64,1}:
>>>>  6
>>>>  5
>>>>  4
>>>>  3
>>>>
>>>>
>>>> Can anyone explain to me why this happens? Is this a language feature?
>>>> Is it at all possible to make a destructive function that acts on slices?
>>>>
>>>> Cheers,
>>>> Daniel.
>>>>
>>>>
>

Reply via email to