Swift 3.0: ошибка компилятора при вызове global func min <T> (T, T) в расширении Array или Dictionary
После конвертации из Swift 2.2 в 3.0 мойArray
расширение больше не компилируется, потому что оно содержит вызов глобальной стандартной библиотечной функцииmin<T>(T,T)
и показывает ошибку компилятораextra argument in call
.
Вот простой способ воспроизвести ошибку:
extension Array {
func smallestInt(first: Int, second: Int) -> Int {
return min(first, second) // compiler error: "Extra argument in call"
}
}
Я получаю ту же ошибку при добавлении той же функции к расширениюDictionary
в то время как точно такой же код прекрасно компилируется в расширении других типов (например,String
или жеAudioBuffer
):
Глядя на документациюArray
а такжеDictionary
Я считаю, что есть методы экземпляра наSequence
названныйpublic func min() -> Element?
а такжеpublic func min(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> Element?
, Хотя обаString
а такжеAudioBuffer
не имеют никакого видаmin(...)
функция.
Возможно ли, что по этой причине я не могу вызвать глобальную функцию? Компилятор не может различить глобальныйfunc min<T>(T,T)
а такжеself.min(...)
хотя у них совершенно разные подписи?
Это ошибка или особенность? Что я делаю неправильно? Как я могу позвонитьmin(T,T)
правильно внутриArray
расширение?