Swift
swift4

【自分用メモ】Swiftのクロージャでスイッチとカウンタを作る

Rubyに続きSwiftでも作ってみる。

Rubyのクロージャでスイッチとカウンタを作る


スイッチ

func create_switch(status:Bool) -> () -> Bool {

var status = status
func changeStatus() -> Bool {
status = !status
return status
}
return changeStatus
}

// 初期値を設定
let s = create_switch(status:false)
print(s())
print(s())
print(s())


実行結果

true

false
true


カウンタ

func create_counter() -> () -> Int {

var n = 0
func countUp() -> Int {
n += 1
return n
}
return countUp
}

let c = create_counter()
print(c())
print(c())
print(c())


実行結果

1

2
3


おまけ

こういう書き方もできるみたい。

func create_switch(status:Bool) -> () -> Bool {

var status = status
return { () -> Bool in
status = !status
return status
}
}