削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
クラス == == ケースクラス == == オブジェクト == == トレント
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎制御構造: Scala 3 の新構文
タグ: 2017年版ソースエディター
199 行
Scalaも、多くのプログラミング言語と同じく、「逐次」「分岐」「反復」の 3 種類の制御構造を持ちます。
Scalaの制御構造は、全て値を持ちます。この事は、Scalaの If'''式''' は、[[C言語]]の三項演算子と等価であることを示します。
 
=== Scala 3 の新構文 ===
Scala 3 では、括弧<code>()</code> を使わない新しい構文が追加されました。
新構文の登場で、'''旧構文が使えなくなることはない'''ので、Scala 2の為に書かれたプログラムが使えなくなるような事はありません<ref>2から3へのアップデートと言うと、python2とpython3の非互換性の悲劇を思い起こす方も多いと思いますが、Scaleでは原則的に下位互換性があります。</ref>。
 
{|
|+ 旧・新構文の対応
|-
!Scala 2!!Scala3
|-
|style="width:45%"|<syntaxhighlight lang=Scala line>
object Main extends App {
val x = 0
val xs = 0 to 4
val ys = 0 to 5
 
if (x < 0)
"負"
else if (x == 0)
"零"
else (x > 0)
"正"
else
"何"
 
if (x < 0) -x else x
 
while (x >= 0) print(x, " ")
 
for (x <- xs if x > 0)
yield x * x
 
for (
x <- xs;
y <- ys
)
println(x + y)
}
</syntaxhighlight>
|style="width:45%"|<syntaxhighlight lang=Scala line>
object Main extends App {
val x = 0
val xs = 0 to 4
val ys = 0 to 5
 
if x < 0 then
"負"
else if x == 0 then
"零"
else x > 0 then
"正"
else
"何"
 
if x < 0 then -x else x
 
while x >= 0 do print(x, " ")
 
for x <- xs if x > 0
yield x * x
 
for
x <- xs;
y <- ys
do
println(x + y)
}
</syntaxhighlight>
|}
 
=== 分岐 ===