2014-10-05 1 views
2

Я только что начал использовать Julia. По моему мнению, Julia позволяет объявлять несколько циклов в одной строке.julia double for loops, looping over словари

Например, это:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^