Вот фрагмент кода, где я получаю ошибку синтаксиса я не понимаю:Как вызвать Swift Array.indexOf?
let deal:[Card] = self.cards
for hand in hands {
var data:[Int] = []
for card:Card in hand.cards {
let idx = deal.indexOf(card)
data.append(idx!)
}
}
Я получаю ошибку «не может ссылаться на„IndexOf“с аргументом типа" (карта)». Я этого не понимаю. сделка [карта]. Что я должен вызвать deal.indexOf, если не карту? Подпись для CollectionType.indexOf в документах:
func indexOf (элемент: Self.Generator.Element) -> Self.Index?
Если сделка является [Картой], не является Я.Генератором. Элемент равен Карте? Я даже добавляю аннотации типа, чтобы проверить, что мои переменные имеют типы, которые я ожидаю. Что мне не хватает? (Как это бывает, карта является структурой, но я получаю ту же ошибку, если меняю ее на класс.)
См., Например, мой ответ здесь: http://stackoverflow.com/a/24400073/341994 Он касается старого предшественника 'indexOf', а именно' find', но принцип точно такой же. – matt
Это сделало, спасибо. Я хочу, чтобы сообщение об ошибке было более конкретным, но я никогда не видел компилятора, чьи сообщения об ошибках мне нравились. – saulspatz
Ну, лучше посмотреть в заголовках, чем в документах. Если вы это сделаете, вы ясно увидите, что 'indexOf' не определен в CollectionType простой и простой, но в' CollectionType, где Generator.Element: Equatable'. – matt