新言語”Swift”をさわってみた

Appleが満を持して発表したOSX・iOS用の新言語「Swift」
ちょっとさわってみた感じでは
・構文がとてもシンプルで分かりやすい!
・最近のトレンドも取り込まれていてなかなかのパワフルさ!
・実行速度もobjective-cより速い(らしい)
・関数言語っぽい所もある
・メモリ管理もARCでラクチン
・Cocoaの呼び出しも大丈夫そう
・これで大カッコのネストから開放される!!
かなり期待大!
これからiOSでアプリつくろうって人はSwiftで良いのではないだろか?

コードはこんな雰囲気

// varで宣言すると変数
// ※型推論によって多くの場合には型を省略できる。便利!
var scoreMath = 78

// letで宣言すると定数となる
let scoreEnglish = 43
// なのでletでは再代入するとエラーとなる
//scoreEnglish = 100



// 文字列の扱いが簡単になった
let textMath = "数学:" + String(scoreMath)

// 文字列へ変換するときにバックスラッシュで直接変数を書ける
let textTotal = "合計:\(scoreMath + scoreEnglish)です!"
NSLog(textTotal)



// arrayの宣言
var citylist = ["kanazawa","komatsu","nanao"]
let sweetslist = ["cake","candy"]

// varでもletでも下記のように代入可能
// もちろん添字の最大値を超えるとエラーとなる
citylist[0] = "angir"
sweetslist[1] = "キャンディ"

// varで宣言されたarrayには要素を追加できる
citylist.append("wajima")



// Dictionary(マップ)の宣言
// key:valueで初期化する
// もちろんこれも型推論してくれる
var population = [
    "kanazawa":460000,
    "komatsu":100000,
    "nanao":50000
]
let finisher = [
    "キン肉マン":"マッスルスパーク",
    "ロビンマスク":"ベルリンの赤い雨"
]

// varで宣言されたDictionalyには要素を再設定できる
population["kaga"] = 60000
// letで宣言されたDictionalyではエラーになる。。arrayではletであっても変更出来るのにね。
// finisher["ペンタゴン"] = "クロノスチェンジ"


// 関数の宣言はこんな感じ
// 関数の中に関数を書いたりも出来るよ
func pickPopulation(cityname:String) -> Int {
    // ? はOptionalっていうC#のnullable、scalaのOptionみたいなやつ
    // (もっとシンプルな書き方もあるよ)
    let popOpt:Int? = population[cityname]
    if popOpt {
        let pop:Int = popOpt!
        return pop
    } else {
        return 0
    }
}


// ループ
var totalpopulation = 0
for city in citylist {
    totalpopulation += pickPopulation(city)
}
NSLog("人口:\(totalpopulation)")

Cとかjavaとか書ける人なら全然問題無いと思います。

ただ、現状XCodeがベータ版ってこともあってか、
 入力補助がちゃんと効かなかったり。
 エディタが構文解析中にエラーで落ちたり。
 言語仕様的には書けるはずのものが実装されていなかったり。
します。
正式版が待ち遠しい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です