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
}
}