Juliaの比較演算子は、多くの言語とよく似ていますが、数学好きのためのちょっとした追加オプションがあります。
等しいかどうかを比べる演算子には、==(等しい)と、!=または≠(等しくない)があります。
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
さらに、大小を比べるさまざまな演算子もあります。
1 < 3 # true
3 > 3 # false
3 <= 3 # true
3 ≤ 3 # true (synonym for <=)
4 >= 3 # true
4 ≥ 3 # true (synonym for >=)
Juliaではよくあることですが、適切なエディターを使えば数学記号を簡単に使えます。\ne、\le、\geと入力してからTABを押すと、≠、≤、≥になります。
先ほどの例では数値しか使っていませんが、シラバスの別のところで、ほかのさまざまな型にも順序の概念があり、大小を比較できることを見ていきます。
比較演算子はつなげて書くことができ、明確で簡潔な構文になります。
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
先ほどの例は、1 ≤ n && n ≤ 5と同じ意味です。
ifによる分岐これが、if文の完全な形です。
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
括弧(())や波括弧({})は必要ありません。インデントは、読みやすくするためだけのものです_(ただし、読みやすさはとても大切です!)_。
elseifとelseはどちらも省略できます。また、elseifブロックは複数書くことができます。ただし、endは必ず必要です。
if文は入れ子にすることもできますが、そのときは括弧、インデント、コメントを上手に使って読みやすくするとよいでしょう。
if文の最も短い形は、次のようなものです。
if n < 0
n = 0
end
念のため: 条件として使えるのは、trueまたはfalseに評価される式だけです。Juliaは「truthiness」という考え方を意図的に避けているので、ゼロの値、空の文字列、空の配列はfalseと_同じではありません_。
条件によって2つの値のどちらかを選ぶ、という単純でよくある場面があります。
Juliaには、多くの言語と同様に、これをより簡潔に書くための三項演算子があります。
構文はconditional ? value_if_true : value_if_falseです。
先ほどの例は、次のように書き換えられます。
n = n < 0 ? 0 : n
括弧はコンパイラーが要求するものではありませんが、付けると読みやすくなる場合があります。
match文はあるのでしょうか?現在のところ、match/caseのような構造は基本言語には含まれていません。
単純な場合には、if..elseif..elseの使用をおすすめします。
Scalaのような高度なパターンマッチングには、Match.jlパッケージが人気です。ただし、ほとんどのサードパーティ製パッケージと同様に、MatchはExercismのテストランナーでは利用できません。