削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎if: if式は、条件式に基づいて分岐し、if式の値は分岐先の式の値です。
タグ: 2017年版ソースエディター
209 行
=== 分岐 ===
==== if ====
if式は、条件式に基づいて分岐し分岐先の式を評価します。
elseが省略され条件が偽だった場合は、 Unit 型の値 () 単位ユニットが式の値となります。
if式の値は、分岐先の式の値です。
 
;構文:<syntaxhighlight lang=ebnf>
if-expr := if '(' 条件式 ')' 式1 [ else 式2 ]
</syntaxhighlight>
:<code>else 式2</code>の部分はオプショナルで、省略され条件偽だ false であった場合 if式はUnit 型の値 <code>()</code> 単位ユニットが式の値となります(要素個数ゼロのタプルです)
: elseif elsif のたぐいはないので、<code>else if (条件式2) 式3</code> と続けます。
;if式の例:<syntaxhighlight lang=Scala line>
object Main extends App{
val i = 0
if (i == 0)
println("zero")
else
println("non zero")
println({
if (i == 0)
"Zero"
else
"Non zero"
})
 
println({
if (i != 0)
"NON ZERO"
})
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
zero
Zero
()
</syntaxhighlight>
 
==== match ====
C言語のswicth文は、式と一致するリテラルのラベルへの多方向GOTO文ですが、Scalaのmatch式はパターンマッチングに基づいています。