2014-10-05 1 views
2

나는 Julia를 사용하기 시작했다. 내 이해를 위해 Julia는 한 줄에 for 루프를 여러 개 선언 할 수있게 해줍니다.줄리아 for double for 루프,

예를 들어

이 :

for i = 1:2, j = [-1,-2] 
    println((i, j)) 
end 

이 발생합니다 : 사전을 통해 반복하는 동안 지금과 비슷한 일을하지만, 오전

(1,-1) 
(1,-2) 
(2,-1) 
(2,-2) 

합니다. 나는이 작업을 수행 할 때

rename = function(x) 
    x["num"] = -x["num"] 
    x 
end 

players1 = [["num" => 1],["num" => 2]] 
players2 = map(rename, copy(players1)) # = [["num" => -1],["num" => -2]] 

이 이상하게 나에게

:

for i=players1, j=players2 
    println(i, j) 
end 

왜 내가이 출력을하지 않는 나는 다음과 같은 선언?

["num"=>1]["num"=>-1] 
["num"=>1]["num"=>-2] 
["num"=>2]["num"=>-1] 
["num"=>2]["num"=>-2] 

답변

2

아. 이 경우 map 함수에는 여전히 deepcopy이 필요합니다.

코드 스 니펫이 작동하는 것 같습니다.

rename = function(x) 
    x["num"] = -x["num"] 
    x 
end 

players1 = [["num" => 1],["num" => 2]] 
players2 = map(rename, deepcopy(players1)) 

for i=players1, j=players2 
    println(i, j) 
end