I think you can achieve what you want by having the ‘defer’ block capture a 
mutable local variable. Eg,

func doStuff() {
  var success = false

  defer {
    if !success {
      // do some additional cleanup
    }
  }

  …
  success = true
  …

  return result
}

> On Oct 8, 2017, at 7:34 PM, Jun Zhang via swift-users <swift-users@swift.org> 
> wrote:
> 
> Hi dear swift developers,
>    I am kind of new to swift and I don't know if this feature already exists. 
> And if it exists already please tell me how. Thank you very much!
>   The feature is to capturing the return value (maybe input value also) of 
> the function. Here is the demo code:
> 
>     func tableView(_ tableView: UITableView, numberOfRowsInSection section: 
> Int) -> Int {
>         defer {
>             if $> >= 0 {
>                 // table is not empty
>             }
>             else {
>                 // table is empty
>             }
>         }
>         return dataSource.cout
>     }
> 
>    I suggest using `$>` as the return value symbol and `$<` as the input 
> parameter symbol. 
>    Thank you all and best regards to you!
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to