高卒文系Scala vol.10 - セミコロン推論 -


Scala本、4.2辺り。



前回の箇所から飛んでますが、3.5、3.6は関数型のプログラミングをしよう!的な内容だったので、

もうちょっとScalaの構文や標準APIを理解してからの方が面白く書けるかなーと思ったので割愛。


続く4.1は、クラス・フィールド・メソッドの基本で殆どJavaと同じ(今のところ)なので、これまた割愛。

違う所は、デフォルトでpublicなところ。

このアクセス修飾子に関しては、後の章で深く取り上げてるので、そこに辿りついてから。



今回は、今まで普通に使ってたセミコロン推論について。

簡単だけど、ちょこっとだけ注意点有り。


val a = 10;val b = 20
val c = a
+ b
val d = (a
+ b)
val e = a +
b
println("a : " + a)
println("b : " + b)
println("c : " + c)
println("d : " + d)
println("e : " + e)

a : 10
b : 20
c : 10
d : 30
e : 30

行末のセミコロンはJavaのように必須ではありません。


「val a = 10;val b = 20」のように一行に複数の文を記述する時は、行末以外はセミコロンが必須です。


文が複数行に分かれる場合、「val c」の初期化のように演算子を文の行頭に持ってくると、

コンパイラは二つの文であると解釈してしまいます。

この場合、「val c = a」と「+ y」に分かれます。コンパイラは通るけど、意図した処理になっていません。


コンパイラに一つの文であると解釈させる為には、「val d」のようにカッコで囲ったり、

「val e」のように演算子を文の行末に置く必要があります。


一般的なスタイルは、「行末に演算子を置く」方らしいです。


自分のJavaコーディングスタイルは、「演算子行頭派」なので、ちょっと気を付けなきゃいけませんねー

このエントリーをはてなブックマークに追加
comments powered by Disqus