Đây là câu hỏi mới bắt đầu thực sự ...Trong vòng lặp for, khi nào các tham số vòng lặp được đánh giá?
Trong vòng lặp for
, khi nào các thông số vòng lặp được đánh giá?
Ở đây, vòng lặp chạy mãi mãi, vì vậy c
rõ ràng 'được kiểm tra' mỗi lần vòng lặp bắt đầu:
c= [1]
for i in c
push!(c, i)
@show c
end
c = [1,1]
c = [1,1,1]
c = [1,1,1,1]
...
Nhưng vòng này chỉ đánh giá một lần:
c= [1]
for i in 1:length(c)
push!(c, i)
@show c
end
c = [1,1]
này một vẻ giống như nó đánh giá enumerate(c)
mỗi vòng lặp:
c= [1]
for (i, _) in enumerate(c)
push!(c, i)
@show c
end
c = [1,1]
c = [1,1,1]
c = [1,1,1,1]
...
Nhưng điều này lo op rõ ràng không:
c= [1]
for i in eachindex(c)
push!(c, i)
@show c
end
c = [1,1]
Và điều này:
c= [1]
foreach(a -> (push!(c, a); @show c), c)
c = [1,1]
c = [1,1,1]
c = [1,1,1,1]
...
Như tôi đã nói, đó là một câu hỏi mới bắt đầu thực sự. Nhưng tôi thiếu một mô hình chung?
Câu trả lời hay, cảm ơn. Có thể đáng để thêm vào các tài liệu chính thức ... Tôi có thể nhận được vòng để thực hiện một PR một ngày ... :) – daycaster
Vui vì nó đã giúp. Ý tưởng hay: Tôi nghĩ tài liệu của Julia nói chung rất tốt nhưng có thể hữu ích khi nhấn mạnh sự khác biệt trong cách lặp lại khi thích hợp. –