Swift 3.0: Compilerfehler beim Aufrufen der globalen Funktion min <T> (T, T) in Array oder Dictionary-Erweiterung

Nach der Konvertierung von Swift 2.2 nach 3.0 myArrayie Erweiterung @ wird nicht mehr kompiliert, da sie einen Aufruf der globalen Standardbibliotheksfunktion @ enthälmin<T>(T,T) und zeigt Compilerfehlerextra argument in call.

Hier ist eine einfache Möglichkeit, den Fehler zu reproduzieren:

extension Array {
    func smallestInt(first: Int, second: Int) -> Int {
        return min(first, second) // compiler error: "Extra argument in call"
    }
}

Ich erhalte den gleichen Fehler, wenn ich einer Erweiterung von @ die gleiche Funktion hinzufüDictionary, während der exakt gleiche Code in einer Erweiterung anderer Typen (z. B.String oderAudioBuffer):

Blick in die Dokumentation vonArray undDictionary, Ich finde, dass es Instanzmethoden auf @ giSequence genanntpublic func min() -> Element? undpublic func min(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> Element?. Während beideString undAudioBuffer habe keine Art vonmin(...) Funktion.

Ist es möglich, dass dies der Grund ist, warum ich die globale Funktion nicht aufrufen kann? Der Compiler kann nicht zwischen globalem @ unterscheidfunc min<T>(T,T) undself.min(...) obwohl sie völlig unterschiedliche Signaturen haben?

Ist das ein Fehler oder eine Funktion? Was mache ich falsch? Wie kann ich @ anrufmin(T,T) korrekt in einemArray extension?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage