2017-07-22 10 views
2

オンデマンドで実行されるクロージャーメソッドが必要です。スウィフト4ではスウィフトのオプションのクロージャー4

// Declare closure 
var checksPerformed: ((Void) -> Void)? // Declaration 

// Call when needed 
checksPerformed?() 

//Only executes when checksPerformed is called 
checksPerformed = { _ in 
    // do stuff here 
} 

これはもはやケースです:スウィフト3では

私はこのような何かを行うために使用しました。

enter image description here

そして、何も前と同じように機能していない、この警告を修正した後。 これを行う新しい方法は何ですか?

私はへの宣言を更新していた場合

:あなたはすべてが期待どおりに動作する必要があることを行うとvar checksPerformed: (() ->())?私は

enter image description here

+0

ちょうどそれを更新:varはchecksPerformed ':?(() - >ボイド)'や 'VAR checksPerformed :(() - >())? "いずれにしても問題ありません。私は個人的に 'Void'を使うのではなく、代わりに'() 'を使うだけです。 – oyalhi

+0

var 'checksPerformed:(() - >())?//宣言 –

+0

@oyalhi質問を更新しました – kernelpanic

答えて

0

使用

var checksPerformed: (()->(Void))? 

を取得しています。

いけない閉鎖を割り当てる際_での使用:

//Only executes when checksPerformed is called 
checksPerformed = { 
    // do stuff here 
} 

//Call when needed 
checksPerformed?() 
+0

最後の段落で私は言った。それはうまくいかなかった。元のメッセージにエラーを含めるように更新します。そして、私はこれを行うことはできません: '' var checksPerformed:() - >(void)? ''。 ''クラスに初期化子がありません ''がスローされました – kernelpanic

+0

あなたは(() - >(Void))をしなければなりませんか?オプションのクロージャとして宣言します。私の組織のおかげで申し訳ありません?質問文の一部だった。 – HixField

+0

回答を更新してより明確にしました – HixField

関連する問題