回答編集履歴
2
誤字の修正
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
これだと、`Converting non-escaping value to 'Any' may allow it to escape` というエラーが出ます。
|
11
11
|
|
12
|
-
引数ラベルの後に `@escaping` というキーワードをいれれば、このエラーを回避することができますが、それだと一時的な回避
|
12
|
+
引数ラベルの後に `@escaping` というキーワードをいれれば、このエラーを回避することができますが、それだと一時的な回避に過ぎず、質問者さんへの本質的な回答となっていないように思えました。
|
13
13
|
|
14
14
|
クロージャは離脱していないはずなのに、なぜ `@escaping` を付けなければならないのか(実際に`print()`の中でどのような処理が行われているのか知る方法はないので、「離脱しない」と明言できませんが)。
|
15
15
|
|
1
リファレンスを追記
answer
CHANGED
@@ -27,6 +27,9 @@
|
|
27
27
|
operation()
|
28
28
|
}
|
29
29
|
```
|
30
|
+
[- withoutActuallyEscaping(_:do:)
|
31
|
+
Allows a nonescaping closure to temporarily be used as if it were allowed to escape.
|
32
|
+
](https://developer.apple.com/documentation/swift/2827967-withoutactuallyescaping)
|
30
33
|
|
31
34
|
こちらの書き方だと、離脱しないクロージャを、離脱するクロージャとして一時的に扱うことを明示できるため、コンパイラがエラーを出すこともありません。
|
32
35
|
|