Swift 3 基本言語仕様
2017-01-27

今まで Objective-C で iOSアプリを開発していましたが、Apple社の方針的にも、そろそろ Swift へ移行する時期かも。
ということで、Swift 言語仕様のメモをここに綴ります。
文字列中に変数を展開する
// シンプルなパターン
let foo = "新幹線"
let bar = "東海道\(foo)"
print(bar) // 東海道新幹線
// 書式を使うパターン
let foo = 1
let bar = String(format: "番号=%03d", foo)
print(bar) // 番号=001
現在の時刻を取得する
// ローカル日時
let date = Date()
let cal = Calendar.current
let year = cal.component(.year, from: date)
let month = cal.component(.month, from: date)
let day = cal.component(.day, from: date)
let hour = cal.component(.hour, from: date)
let min = cal.component(.minute, from: date)
let sec = cal.component(.second, from: date)
let nanosec = cal.component(.nanosecond, from: date)
let wday = cal.component(.weekday, from: date) // 1=日曜日
print(String(format: "%d/%02d/%02d %02d:%02d:%02d.%d %d", year, month, day, hour, min, sec, nanosec, wday))
// 2017/01/27 21:13:48.241433024 6
// Unix epoch time (UTCでの1970年1月1日午前零時からの秒数)
let nowsec = time(nil)
print(nowsec) // 1485518007
関数コール
//
// _ を付加するとコール時の引数名を省略できる
//
func foo(_ bar: Int){
print(bar)
}
foo(50) // bar の記述は不要
//
// 複数の戻り値(タプル)
//
func foo() -> (apple: Int, banana: Int) {
let apple = 10
let banana = 20
return (apple, banana)
}
var ret = foo()
print(ret.apple, ret.banana) // 10 20
クラス
//
// イニシャライザ(コンストラクタ)
//
class Foo {
var apple = 0
var banana = ""
init(apple: Int, banana: String) {
self.apple = apple
self.banana = banana
}
}
let foo = Foo(apple: 10, banana: "XYZ")
print(foo.apple, foo.banana) // 10 XYZ
48.241433024 6Apple社cal.componentCalendar.currentclass Foofoo.applefoo.bananafunc fooiOSアプリlet applelet bananalet barlet callet datelet daylet foolet hourlet minlet monthlet nanoseclet nowseclet seclet wdaylet yearObjective-Cret.appleret.bananaself.appleself.bananaSwift 3Unix epoch timevar applevar bananavar retイニシャライザパターンメモローカル時刻基本基本言語仕様変数文字列中方針的時分秒時期書式東海道新幹線番号秒数