削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎while: 加筆
タグ: 2017年版ソースエディター
296 行
=== 反復 ===
==== while ====
while式は、条件式が true の間、式を評価しつづけます。
while式の値は、評価した式の値です。
 
;構文:<syntaxhighlight lang=ebnf>
while-expr := while '(' 条件式 ')' 式
</syntaxhighlight>
: 条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/A8RXe7wm4tuqv_N-EaeiuQ?language=scala while式の例]:<syntaxhighlight lang=Scala highlight="4-7" line>
object Main extends App {
var i = 0
while (i < 5) {
println(i)
i += 1
}
println(s"last = $i")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
2
3
4
last = 5
</syntaxhighlight>
: Scalaには、<code>変数 ++</code> の様なインクリメント演算子はなく、<code>変数 += 1</code> の構文を使います。
:: これは、Scala の整数はイミュータブルなためで、同じ理由で [[Ruby]] にもインクリメント演算子はありません。
:: また、<code>変数 += 1</code> は、<code>変数 = 変数 + 1</code>の構文糖です。
:: さらに、<code>変数 + 1</code> は、<code>変数 .+(1)</code>の構文糖です。
::: 加算に限らず、Scalaの演算子は、メソッドの構文糖です。
: <var>i</var> のスコープは、object Main なのでループを抜けても値を参照出来ます。
: <code>s"last = $i"</code> は、加工文字列リテラル(''processed string literal'') で、文字列の中で変数の値を参照できます。
 
==== do - while ====
Scala 3 で、do - while は廃止になりました。