社畜系WEBエンジニアの消耗戦

読者です 読者をやめる 読者になる 読者になる

社畜系WEBエンジニアの消耗戦

修羅の国でせっせと働く社畜系WEBエンジニアのブログ

【詳細!Swift3】Swiftの基本構文を学ぶ part1

Swift

プログラムを書くには、その言語の基本構文を知らないと話にならない。なので、まずアプリを作り出す前に、Swiftの基本構文について学んでおこう。

対象者

ここでは既に何かしらのプログラミング言語には触れたことはあるが、Swiftは初めて、という人をターゲットに進めていく。なので、「変数って何?」みたいなF◯CK野郎はお帰り願う。

定数、変数

定数はlet、変数はvarで宣言する。まぁここはあまり深く考えなくてもいいかもしれない。というのも、varで宣言していたとしても、以降値が変わっていなければ、Xcodeでwarningで「これletにしてよ」って教えてくれるから。

let foo = "oppai"
var bar = "boin"

型推論

Swiftは静的言語なので、ガッツリ型に縛られている。まぁ、PHPがぬるま湯過ぎるっていう話だけかもしれないが。んで、Swiftでは、型は明示しなくてもSwift側が勝手に推論して入れてくれる。しかも、Swiftでは基本的には型推論を使って宣言することが推奨されているので、明示的に型を宣言する必要は、全くない。

let foo: String = "oppai"

タプル

一つの変数に複数の値を入れられるもの、らしい。イマイチ使い所はわからんね。関数の戻り値で2つ以上戻したい時とか?そんなもん?

  • 異なった型を組み合わせることができる
  • 値の変更はできるが、個数の増減はできない
  • 値の変更はできるが、後から異なる型の値に変更することはできない

宣言はこんな感じ。

let product = ("Swift", 2014)

なんかイマイチ使い勝手が悪そうな感は否めない。これは僕がSwift初心者だから感じることなのか?

値の取り出し

こんな感じで取り出す。関数の戻り値とかで使えそうな感じ。

let data = (1000, 80)
let (price, tax) = data

要らない値は、_で無視できる。

let data = (1000, 80)
let (price, _) = data

インデックスでアクセス

配列ライクな取り出し方もできる。

let data = (1000, 80)
print(data.0)    //1000
print(data.1)    //80

ラベルを付ける

連想配列っぽい扱い方もできる。実際のケースではこっちの方が使い勝手は良さそうですね。

let data = (price:1000, tax:80)
print(data.price)   //1000
print(data.tax)     //80

演算子

他の言語と変わりません。三項演算子ももちろんあります。

範囲指定のレンジ演算子だけちょっと見たこと無い形だったので書いておきます。

開始値..<終了値で終了値を含まない範囲、開始値...終了値で終了値まで含む範囲です。

for i in 1..<5 {
    print("\(i)times")
}

//1times
//2times
//3times
//4times
for i in 1...5 {
    print("\(i)times")
}

//1times
//2times
//3times
//4times
//5times

おわりに

ちょっと長くなってきたので、続きは次回!次は制御構文周りの話です。