Как сделать многострочное понимание массива? - PullRequest
2 голосов
/ 17 октября 2019

Если я хочу создать массив с пониманием, но логика должна состоять из нескольких строк, как я могу это сделать в Джулии?

Например,

[ ...logic... for x=1:10]

За исключением того, что логика более четко написана в несколько строк, а последняя строка дает то, что я хочу?

Ответы [ 2 ]

5 голосов
/ 17 октября 2019

Как правило, синтаксис do предпочтителен для такого рода вещей, но обратите внимание, что можно сделать в обычном понимании массива, вам просто нужно обернуть его в скобки и использовать точки с запятой для строки. перерывы:

[(y = x + 1;
  z = y^2 + x;
  z^4 + 2y) for x in 1:5]

приводит к

5-element Array{Int64,1}:
     629
   14647
  130329
  707291
 2825773
4 голосов
/ 17 октября 2019

map(iterator) do x делает это:

map(1:5) do x
    1+1         # this line is un-yielded logic that precedes the final value 
    x           # this final line is what is returned in the resulting array
end

приводит к:

5-element Array{Int64,1}:
 1
 2
 3
 4
 5
...