2

私はVaporを使用していますが、最初に行うことの 1 つは、次のような get メソッドを使用することです。

drop.get("hello") { request in
    return "Hello, world!"
}

私の理解では、クロージャーは型関数の変数のようなものです。正しい?ここでは、drop というクラスgetのインスタンスでメソッドを呼び出し、文字列を渡していることがわかります。Droplet

get メソッド本体内でクロージャーが呼び出されたり渡されたりするとどうなりますか? 読み方は?

4

1 に答える 1

5

これは、トレーリング クロージャ構文と呼ばれます。関数の最後のパラメーターがクロージャーの場合、前のパラメーターを閉じる括弧の直後に中括弧で配置できます。

ここでのgetメソッドは 2 つのパラメーターを取ります: aStringと、次のような署名を持つクロージャー(Request) -> ()

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html#//apple_ref/doc/uid/TP40014097-CH11-ID102

また、配列のメソッドのように、唯一のパラメーターがクロージャーである場合も見られます。map()このような状況では、括弧を完全に省略でき、クロージャーは関数名の直後に中括弧で記述されます。たとえば、次のようになります。

let lowerCasedWords = arrayOfWords.map{ $0.lowercased() }
于 2016-12-06T05:56:02.050 に答える