Xtity Blog

techieなこと、書いてます

【Swift】公式ドキュメントをお昼休みにまとめてみた【第一回】

Swift

概要

今日の2時から4時まで行われたWWDC、リアルタイムで見られていた方お疲れ様でした。 私もストリーミングを見ながら、テンション高めで色々つぶやいていました。

さて、今回のWWDC原点回帰というかなんというか、エンジニアのエンジニアによるエンジニアのためのキーノートだったように思います。

デバイスの発表一個もなかったしw

ということで、そんなエンジニア得な発表で一番目を引いたのが掲題のSwiftでしょう。

今回はそのSwiftについて、公式ドキュメントの中のA Swift Tourをざっくり通勤電車の中で読んでみたので、そこで気になった点をお昼休みに適当にまとめてみましたという内容です。

WWDC2014

ちな、iOS

iPhone SDKだったころからいじってます。アプリも何個か出してます (最近はもっぱらTitaniumでJSでしか書いてないですが)

A Swift Tour

それでは旅にでましょう、ガリバーっぽく、スイフトだけに

論理行末は改行なのかな?

よく分からんが見た感じ

型宣言が後置修飾

Scalaスキーにはお馴染みですね。動的型付けやるのには後置修飾の方が省略とかしたときに直感的です。

let impInt = 70
let implDouble = 70.0
let expDouble: Double = 70

(一応マークダウンのコード引用で書いたんですが、swiftのシンタックスハイライトは当然ないですよね、分かります)

Swiftの関数は第一級関数

これもScalaとかモダンな言語やってると大変当たり前ですね。 何て説明してるかというと、

Functions are a first-class type. This means that a function can return another function as its value.

つまり、関数が値返すんで変数に詰めたり、関数の引数に関数入れたりできます。まあ、改めて言うまでもないですね。

structとかいうキーワード

こんな感じで、classキーワードと同じように使うようです

struct Card {
    var rank: Rank
    var suit: Suit
    func simpleDescription() -> String {
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }
}

classキーワードとの差異は、

One of the most important differences between structures and classes is that structures are always copied when they are passed around in your code, but classes are passed by reference.

とのこと。参照と値で異なる感じで

コンストラクタとデストラクタ

それぞれ、initとdeinit。

classの例

ざっくりこんな感じになるよう

class Square: NamedShape {
    var sideLength: Double
    
    init(sideLength: Double, name: String) {
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 4
    }
    
    func area() ->  Double {
        return sideLength * sideLength
    }
    
    deinit() {
        // do something
    }
}

まあ、違和感はほとんどないシンタックスになってます。 普通のPG(フルスタック?)なら、上の公式ドキュメントちょろちょろ眺めながら、今日からでもすんなり書けるのではないですかね、よく分かんないですけど。

あえて言えば、下記の仕組みがまだ詳細にA Swift Tour以降のドキュメントを読まないとよく分かりません。

  • willsetキーワード
  • mutingキーワード

お昼休み終わっちゃったんで、あとはまあおいおいやる気が出たときにでもノシ