与えられた:
typealias Action = () -> ()
var action: Action = { }
func doStuff(stuff: String, completion: @escaping Action) {
    print(stuff)
    action = completion
    completion()
}
func doStuffAgain() {
    print("again")
    action()
}
doStuff(stuff: "do stuff") { 
    print("swift 3!")
}
doStuffAgain()
作るためにどのような方法があるcompletionパラメータは、(とaction)タイプのAction?とも続けますか@escaping?
タイプを変更すると、次のエラーが発生します。
@escaping属性は関数型にのみ適用されます
@escaping属性を削除すると、コードはコンパイルされて実行されますが、completionクロージャーが関数のスコープをエスケープしているため、正しくないようです。
@escaping属性を削除すると、コードがコンパイルされて実行されます」-SR-2444で説明されているようにAction?、デフォルトではエスケープしているためです。したがって、@escapingオプションのクロージャーを使用するときに削除することで、必要なものが完成します。