背景
iPhone/iPadアプリを開発するためにswiftを使うことになったので、休日を教養のために充てて基本文法から勉強してみた。
ちなみに、普段からメインで使っている言語はC/Java/C#/JavaScriptで、Ruby/Python/Goは触ったことがある程度にしか知らない。Objective-Cについては一切知らない。
今回は同じような状況にあって、即座になんとなくswiftを理解しなければならないような状態に陥ってしまっている人向けの記事を書く。
ガッツリ勉強する人向けの記事ではないのであしからず。
開発環境
SwiftはMacOSがなければ開発できないと思っていたが、どうやらそうではないらしい。
昔はC#もそうだった(Windowsという決まったOSでしか開発できなかった)が、今はswiftもオープンソース化してMac以外のOSでも開発できるので焦ってMacを買う必要はない。ただしiPhone/iPadアプリを開発するにはMacが必要なのは間違いない。
つまり、iPhone/iPadアプリではないアプリをSwiftで開発したいだけならUbuntuでもいい。以下は公式サイトのリリース一覧だが、Linux用のパッケージとインストール手順が記載されている。
https://swift.org/download/#releases
今回は公式サイトの手順に従いUbuntu18.04にインストールした。
$ swift --version
Swift version 4.2.1 (swift-4.2.1-RELEASE)
Target: x86_64-unknown-linux-gnu
サンプルコード
基本的な文法が理解できる程度の簡単なコード(定番のfizzbuzz)を書いておく。
func run(_ start:Int, end:Int)->Void{
for val in start...end{
var str : String = ""
if(val%3==0){
str += "Fizz"
}
if(val%5==0){
str += "Buzz"
}
if str == "" {
str = String(val)
}
print(str)
}
}
run(1, end:100)
これまでの言語と違うところ
これまで、というのはC/Java/C#/JavaScriptのことだ。自分目線で。とりあえず自分が感じたポイントを列挙しておく。
- ターミネータ
;
が不要 - 変数宣言は
var hoge:String
- 定数宣言は
let PI = 3.14
- インクリメント
i++
、デクリメントi--
が使えない。i+=1
はできる。 - なので
for
ループも書き方が独特(foreachとbashのブレース展開みたいな書き方を組み合わせる)for i in 1..<10 { }
- 文字列の比較は
==
でいい - ifの条件文の小括弧が不要(あってもいい)
- ifの処理ブロックに中括弧は必要
-
null
ではなくnil
- 関数は
func
で宣言する- 呼び出し時に実引数に仮引数名のラベルをつけないといけない
- ラベルを省略するためには仮引数前に
_
をつける - 戻り値を2つ以上返すことができる
こんなところだろうか。なんとなくGo言語に近いのだろうか。そんな気がする。インクリメントi++
ができないのは意外だった。
class
やOptional型などはまだ使っていないので後報。