Xcode Swiftの行末セミコロン
今回はプログラミングの文章の後ろにあることでおなじみのセミコロンの話。
私が今までやってきたプログラミング言語のほとんどは行末にセミコロンをつけないと
エラーが出たり、なんらかの不具合が出るものばかりでした。
今日までSwiftの記事に書いたコードは全て行末にセミコロンをつけていたのですが、
Swiftはセミコロンが行末になくても良い言語です。
var numA: Int = 5 var numB: Int = 13 var numC: Int = numA + numB print(numC)
このように書いてもエラーは何も起こりません。
で、思ったこと。
セミコロンなしで文の終了という扱いなら改行混じりの
文字連結や計算はできるのか?
結論を先に言うとなんの問題もなくできました。
なんでこんなこと思ったのかっていうと・・・
以前研修でVB.NETという言語に触れたことがありまして。
この言語もセミコロンいらずで改行することで文末になる言語です。
ですが、この言語は改行を確実に文末と見る性質があり、
別の行に入った時点で別な処理が動くような言語です。
改行してもまだ同じところを処理してるよ、と言うのに
文末にアンスコを明示的につけないといけないという規則がありました。
Dim a As String Dim b As String Dim c As String a = "てすと1" b = "てすと2" 'この部分はエラー c = a & b 'こう書かなきゃいけない c = a & _ b
こんな感じ。
ですがSwiftは改行が文末であると同時に、意味的に正しい書き方をしてれば
まだ処理が続いていると判断してくれます。
var jap: Int = 79 var mat: Int = 65 var soc: Int = 55 var sci: Int = 86 var eng: Int = 47 var total = jap + mat + soc + sci + eng print(total)
こんな書き方しても大丈夫です。
絶対怒られるので真似しないように。
で、行末セミコロンはなくても良いのですが、意味のあるセミコロンはもちろん
省略できません。
例えばfor文。
for(var i:Int = 0; i<5; i++) { print(i) } for(var i:Int = 0 i<5 i++) { print(i) }
こんな書き方する人いないと思いますが・・・
for文のセミコロンは行末セミコロンとは意味が違うので
改行で省略、という書き方はできません。
下段の書き方をするとエラーになります。
で、一般的にSwiftは行末セミコロンをつけない習慣がありそうです。
大半の入門サイトを見てもそうなのですが、
なにせ公式のソースでもセミコロンは使われてないですからね。
とまぁ、VB.NETの一件もあって行末にセミコロンがないと落ち着かないという感じが
私の中にあるので今までセミコロンを付けてコード書いてましたが、
今後はこれに倣ってセミコロンなしでSwiftコード書いてくように心がけようかと思います。
あ、でも独自のルールで行末セミコロン付けないと怒られるという環境にいる人は
そのルールに従ってくださいね。