べ、別に鞍替えとかそういうのじゃないんだからね!
時間かけてなんかやったなら、その記録を残そうという趣旨でございます。
はじめに
プログラミングというものに関する私のスキルセットは以下です。
- 前の会社で3ヶ月Javaやってたけど忘れたしあんなもんはノーカン
- よってJavaScriptからプログラミング道に入門
- JavaScriptをよく書くようになってやっと2年過ぎた
- Perlを業務上わりとよく見る/ちょっとだけ書く
- Ruby/PHPならコピペでならなんか作れる
というような感じなので、ことプログラミングの根源たる部分に関しては見当違いのこととか多数あると思います。
なんかあったら教えてくださいまし。
Swiftで
とりあえずTodoApp作りました。
- ヘッダとリストで構成されてて
- ヘッダの新規追加ボタンから新規追加ができて
- リストをスワイプすると編集と削除ができて
- データがアプリ側に保存できる
そういうThe TodoAppを。
てか以下のサイトのやつです。
参考:作って学ぶSwift/iOSアプリ入門Camphor- Tech Blog | Camphor- Tech Blog
大変勉強になりました!
さて本題。
以下、むってなったものやなるほどーってなったものたち。
型付けできる
var count: Int = 1 let name: String = "Swift" let arr: [String] = ["foo", "bar"]
出ましたJavaScriptしか知らん人泣かせの概念!
とはいえそんなに難しいものじゃない + むしろありがたいと感じる今日このごろ。
指定しなくても動的に型付けしてくれるらしいけど、
これはもう片っ端から付けるようクセにしたほうがいい気がする。
Dictionary
オブジェクトでやりたいことをやる時に使う感じ?
でも型で縛って使うので、定数オブジェクトみたいな用途にしか使えないかも。
まあなんでもできちゃうjsが特殊なんかね・・。
var langDict: [String:String] = [ "ruby": "るびー", "js": "ジャッヴァスクリプト" ]
{} じゃなくて [] っていう!!
タプル
新たな概念や。
let name: (first: String, last: String) = (first: "Lea", last: "der22") let res: (min: Int, max: Int, sum: Int) = (min: 1, max: 5, sum: 20)
こういう組み合わせの内容がくるってのを定義できるのね。
シングルクオート使わない
// let name = 'これダメ' let name = "これOK"
これは中々に衝撃でした。
ダブルクオートなんか使うんじゃねえ!って言われて育った身としては!
セミコロンも括弧もいらない
if hoge > 10 { println("Over 10!") }
これも慣れの問題でしょうがだいぶ違和感が・・・。
for inで配列まわせる
// まわせる! for word in ["hoge", "fuga", "piyo"] {} // indexほしいとき for (index, word) in enumerate(["hoge", "fuga", "piyo"]) {}
そんなことが・・。
ちなみにDictionaryも回せるらしい。
Optional
型の後ろに ? つけるやつ。
これをしないと、nil(nullじゃない!)を代入できない。
var num: Int? = 1 num = nil // ok num!++ // ただし ! つけないと元の型として使えない
そして使うときは ! つけないといけない。
いかにJavaScriptがなんでもアリの世界やったかを味わっています。
巻き上げとかない
functionとは違うのだよ!
// エラーになる // println(getA()) func getA() -> String { return "A" } println(getA())
まあ、そんな書き方する機会ないんやろけど。
ArrowFunctionではない
このペースでメモってるとキリない気がしてきた。
// -> は戻り値の型を書いてる func getA() -> String { return "A" } // 何も返らないやーつ func say(message: String) -> Void { println(message) }
newとかいらない
いらないんですって。
Enum
どっかで見た・・・TypeScript?
enum Suit { // case で定義してく case Spades, Hearts, Diamonds, Clubs func desc() -> String { switch self { // 使うときドットつける case .Spades