2016-07-03 4 views
2

私たちは、このような補完ブロックで関数を書くことができます。PythonでSwift補完ブロックと同等のものは何ですか?スウィフトは

func thisNeedsToFinishBeforeWeCanDoTheNextStep(completion:() ->()) { 
    print("The quick brown fox") 
    completion() 
} 

そして、我々はそれを呼び出すときに、我々はそれは、プロセスの終了です一度実行するために、そのブロックの内側に何かを置くことができます。

func thisFunctionNeedsToExecuteSecond() { 
    print("jumped over the lazy dog") 
} 

Pythonで同等のものは何ですか?

+2

Python関数は順番に実行されます。 –

+0

すべてのコードが順番に実行されます。だからAPI呼び出しであっても、前の関数が応答を受け取るまで次の行に進まないでしょうか?関数を実行したいが、それが機能している間にプログラムを続行したい場合は、その関数が終了したら別のものを実行したいのですが? –

+0

mutlithreadingを使用しない限り、関数は順番に実行されます。 –

答えて

3

Pythonは関数をオブジェクトと見なします。つまり、Swiftのように(Swiftの実装の詳細に慣れていなくても)それらを渡すことができます。もちろん、パラメータで型を指定することはできません。なぜなら、Pythonでは何もすることはできないからですが、それは問題ありません。実装は次のようになります。

def do_first(completion): 
    print("The quick brown fox ") 
    completion() 

def do_second(): 
    print("jumped over the lazy dog.") 

そしてそれらを使用する:

do_first(do_second) 

あなたが最初の関数に先駆けcompletion()コールの非同期コードを使用していない限り、予想通り、ラインが順次実行されます。

関連する問題