8

1 つのクラスに複数のオーバーロードされた関数があるとします。

func appendToABC(string s: String) -> String {
    return "ABC \(s)"
}

func appendToABC(duplicatedString s: String) -> String {
    return "ABC \(s)\(s)"
}

そして、関数を引数として取得する API があります。

func printString(function: (String) -> String) {
    print(function("ASD"))
}

appendToABC 関数の 1 つを引数として printString 関数に渡すにはどうすればよいでしょうか?

関数をクロージャでラップすることも考えましたが、見栄えがよくありません

printString { appendToABC(duplicatedString: $0) }
4

1 に答える 1

5

これは Swift の既知の制限です。それに対処するための公開提案があります。現在、唯一の解決策は閉鎖です。

これは Swift の多くのことに当てはまることに注意してください。プロパティは関数のように動作しますが、関数として直接参照することもできません。クロージャーを使用する必要があります。また、一部のフリー関数でさえ、直接渡すことができません (printが最も一般的な例です)。

于 2016-01-08T14:14:42.363 に答える