LoginSignup
1
1

More than 5 years have passed since last update.

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

Posted at

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1