Happy to help

On 11 December 2014 at 17:04, Sean McBane <[email protected]> wrote:

> Ah, I see the error in my thinking now. Knowing what the ! signifies makes
> it make a lot more sense.
>
> Thanks guys for putting up with a newbie. This was probably one of those 1
> in the morning questions that I should have waited to look at the next day
> before asking for help; it seems obvious now.
>
> -- Sean
>
> On Thursday, December 11, 2014 3:26:12 AM UTC-6, Mike Innes wrote:
>>
>> Think of append!(X, Y) as equivalent to X = vcat(X, Y). You called
>> append! twice, so X gets Y appended twice.
>>
>> julia> X = [1,2]; Y = [3,4];
>>
>> julia> X = vcat(X,Y)
>> [1, 2, 3, 4]
>>
>> In your example you went ahead and did this again:
>>
>> julia> X = (X = vcat(X, Y))
>> [1, 2, 3, 4, 3, 4]
>>
>> But if you reset X, Y via the first statement and *then* call X =
>> append!(X, Y), it works as you would expect.
>>
>> julia> X = [1,2]; Y = [3,4];
>>
>> julia> X = append!(X, Y) # same as X = (X = vcat(X, Y))
>> [1, 2, 3, 4]
>>
>> On 11 December 2014 at 07:51, Alex Ames <[email protected]> wrote:
>>
>>> Functions that end with an exclamation point modify their arguments, but
>>> they can return values just like any other function. For example:
>>>
>>> julia> x = [1,2]; y = [3, 4]
>>> 2-element Array{Int64,1}:
>>>  3
>>>  4
>>>
>>> julia> append!(x,y)
>>> 4-element Array{Int64,1}:
>>>  1
>>>  2
>>>  3
>>>  4
>>>
>>> julia> z = append!(x,y)
>>> 6-element Array{Int64,1}:
>>>  1
>>>  2
>>>  3
>>>  4
>>>  3
>>>  4
>>>
>>> julia> z
>>> 6-element Array{Int64,1}:
>>>  1
>>>  2
>>>  3
>>>  4
>>>  3
>>>  4
>>>
>>> julia> x
>>> 6-element Array{Int64,1}:
>>>  1
>>>  2
>>>  3
>>>  4
>>>  3
>>>  4
>>>
>>> The append! function takes two arrays, appends the second to the first,
>>> then returns the values now contained by the first array. No recursion
>>> craziness required.
>>>
>>> On Thursday, December 11, 2014 1:11:50 AM UTC-6, Sean McBane wrote:
>>>>
>>>> Ivar is correct; I was running in the Windows command prompt and
>>>> couldn't copy and paste so I copied it by hand and made an error.
>>>>
>>>> Ok, so I understand that append!(X,Y) is modifying X in place. But I
>>>> still do not get where the output for the second case, where the result of
>>>> append!(X,Y) is assigned back into X is what it is. It would make sense to
>>>> me if this resulted in a recursion with Y forever getting appended to X,
>>>> but as it is I don't understand.
>>>>
>>>> Thanks.
>>>>
>>>> -- Sean
>>>>
>>>> On Thursday, December 11, 2014 12:42:45 AM UTC-6, Ivar Nesje wrote:
>>>>>
>>>>> I assume the first line should be
>>>>>
>>>>> > X = [1,2]; Y = [3,4];
>>>>>
>>>>> Then the results you get makes sense. The thing is that julia has
>>>>> mutable arrays, and the ! at the end of append! indicates that it is a
>>>>> function that mutates it's argument.
>>>>
>>>>
>>

Reply via email to