Thanks for the PSA; I'd enjoy more of them. On Sun, Apr 19, 2015 at 7:56 PM, Dahua Lin <[email protected]> wrote:
> Thanks for the great work! > > Dahua > > > On Monday, April 20, 2015 at 9:47:13 AM UTC+8, Tim Holy wrote: >> >> For those of you wanting to write code that will perform well on >> different >> AbstractArray types, starting with julia 0.4 it will be recommended that >> you >> should typically write >> >> for i in eachindex(A) >> # do something with i and/or A[i] >> end >> >> rather than >> >> for i = 1:length(A) >> # do something with i and/or A[i] >> end >> >> The syntax >> >> for a in A >> # do something with a >> end >> >> is unchanged. >> >> If you're using julia 0.3, the Compat package (starting with version >> 0.4.1) >> defines `eachindex(A) = 1:length(A)`, so if you're willing to use Compat >> you >> can already start using this syntax. >> >> >> This will make a difference, in julia 0.4, when indexing arrays for which >> a >> single linear index is inefficient---in such cases, `i` will be a >> multidimensional index object. You can still say `A[i]`, and it will >> likely be >> several times faster than if `i` were an integer. In contrast, if `A` is >> an >> array for which linear indexing is fast, then `eachindex(A) = >> 1:length(A)` as >> previously. >> >> You can read more about this in the documentation for multidimensional >> arrays >> in julia 0.4: >> http://docs.julialang.org/en/latest/manual/arrays/ >> >> This public service announcement has been sponsored by the Department of >> Arrays and Array Indexing. >> >> Best, >> --Tim >> >> -- [email protected]
