2014-10-16 1 views
1

У меня есть площадка:Swift Струнного поведения перегрузки «>»

let astr = "A" 
let bstr = "a" 

astr > bstr 

"A" > "a" 

Выход: ложны для первого использования> и ошибок для второго:

исполнения площадки не удалось:: 69: 5: ошибка: неоднозначное использование оператора '>' «A»> «a» ^ Фонд.>: 1: 6: примечание: найдено этого кандидата func> (lhs: String, rhs: NSString) - > Bool ^ Фонд.>: 1: 6: примечание: нашел этого кандидата FUNC> (LHS: NSString, шк: String) -> Bool

Это сверло вниз реальной проблемы у меня возникли:

var team = ["Jane","Kate","George","Zulma"] 
let sortedteam = team.sorted({ $0 > $1 }) 

Это дает мне ту же ошибку.

+1

Я не могу объяснить, почему, но вы можете решить это, изменив сравнение: Замените '{$ 0> $ 1}' на '{$ 1 <$ 0}'. –

+0

Это правда ... странно. И ошибка, которую она дает, действительно не помогает. Для первой части вопроса разница выглядит глупо. Tks for Work around – Franklin

+0

@MartinR По какой-то причине он также работает, если вы помещаете туда явный 'return':' {return $ 0> $ 1} ' –

ответ

1

Вы можете попробовать использовать глобальную отсортированный функцию вместо этого, которая не имеет этой проблемы:

var team = ["Jane","Kate","George","Zulma"] 
let sortedteam = sorted(team, { $0 > $1 }) 

В качестве альтернативы вы можете удалить некоторые из сжатости закрытия, так что компилятор знает, какие это сравнение ,

var team = ["Jane","Kate","George","Zulma"] 
let sortedteam = team.sorted({ (s1: String, s2: String) in s1 > s2 }) 
+0

' Array' * имеет * метод 'sorted()' и фактически 'let sortedteam = team.sorted ({$ 1 <$ 0})' компилирует. Так что настоящая причина - это нечто другое. –

+0

спасибо Мартин, я пересмотрел эту часть. Это, по-видимому, указывает на то, что это, скорее всего, ошибка – connor

Смежные вопросы