[swift-users] withoutActuallyEscaping example question
Ray Fix
rayfix at gmail.com
Sun Mar 26 02:13:08 CDT 2017
Hi,
One of the motivating examples for withoutActuallyEscaping looks like the following. This predictably doesn’t work because "use of non-escaping parameter 'predicate' may allow it to escape"
func myFilter(array: [Int], predicate: (Int) -> Bool) -> [Int] {
return Array(array.lazy.filter { predicate($0) })
}
The solution is to use withoutActuallyEscaping. This works and produces the expected results.
func myFilter(array: [Int], predicate: (Int) -> Bool) -> [Int] {
return withoutActuallyEscaping(predicate) { predicate in
Array(array.lazy.filter({predicate($0)}))
}
}
What I find puzzling is the below example compiles and runs correctly. It seems like it should be the same compiler error as in the first example.
func myFilter(array: [Int], predicate: (Int) -> Bool) -> [Int] {
return Array(array.lazy.filter(predicate))
}
If you understand why this is so, it would be very helpful.
Thank you and best wishes,
Ray
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170326/bc49a1f3/attachment.html>
More information about the swift-users
mailing list