logo

ジュリアでエレガントなループを使用する方法 📂ジュリア

ジュリアでエレガントなループを使用する方法

ガイド

while

while文は他の言語と変わらない。

julia> while x < 10
           x += 1
           print("▷eq1◁i - ")
       end
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 -

julia> for i = 1:10
           print("▷eq2◁i - ")
       end
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 -

ジュリアで主に使われるループのスタイルは、上に示した3つがある。一番上はRパイソンで使われる方法に似ているし、二番目はマトラブに似ている。最もエレガントな表現は三番目の集合の内包表記を使用した方法だ。

ネストしたループ

以下の2つのループは機能的に全く同じだ。

julia> X = 1:4; Y = 8:(-1):5;

julia> for x ∈ X
           for y ∈ Y
               print("  (▷eq3◁y) = ▷eq4◁x + ▷eq5◁(x + y)")
           if y == 5 println() end
       end
  (1 + 8) = 9  (1 + 7) = 8  (1 + 6) = 7  (1 + 5) = 6
  (2 + 8) = 10  (2 + 7) = 9  (2 + 6) = 8  (2 + 5) = 7
  (3 + 8) = 11  (3 + 7) = 10  (3 + 6) = 9  (3 + 5) = 8
  (4 + 8) = 12  (4 + 7) = 11  (4 + 6) = 10  (4 + 5) = 9

まるで擬似コードpseudo Codeを書くかのようにコードが書かれているのがわかる。注意事項としては、以下のように反復子iteratorとしてタプルを与えた場合だ。

julia> for (x,y) ∈ (X, Y)
           print("  (▷eq3◁y) = ▷eq7◁x + ▷eq5◁(x + y)")
           if y == 5 println() end
       end
  (1 + 8) = 9  (2 + 7) = 9  (3 + 6) = 9  (4 + 5) = 9