私はスウィフト3に更新した後、次のコード行で困難を抱えている:それではAssigning non-escaping parameter 'f' to an escaping closure
奇妙なエスケープ関数の動作スウィフトに更新した後、3
:私は、コンパイラエラーを与えた
private var functionHandlers = [(() -> Int) ->()]()
private var myFunction: (() -> Int)?
func doRegister() {
functionHandlers.append { (f: (() -> Int)) in
myFunction = f
}
}
func doRegister() {
functionHandlers.append { (f: @escaping (() -> Int)) in
myFunction = f
}
}
と、この:
func doRegister() {
functionHandlers.append { (f: (@escaping() -> Int)) in
myFunction = f
}
}
、私はこれを試してみました 両方のケースでは、私の最初のエラーを修正し、
が、その後、私に新しいコンパイラエラーを与えた:Cannot convert value of type '(@escaping (() -> Int)) ->()' to expected argument type '(() -> Int) ->()'
それでは、私は次のようにfunctionHandlers
の種類を変更しようとした:ちょうど
private var functionHandlers = [(@escaping (() -> Int)) ->()]()
が、その構文エラーが発生しました。
誰も私にこれがなぜ起こっているのか、私はこれを修正するために何ができるのか説明できますか?
末尾の '.append {} 'はどこから来ますか? – Alexander
彼は関数を追加しています@AlexanderMomchliov – Hamish
@Hamishああ私は参照してください – Alexander