Swift: ошибка: использование необъявленного типа ‘T’

#swift #generics #swift3

#swift #дженерики #swift3

Вопрос:

Swift 3.0 и получение этой ошибки, не уверен, почему:

Код:

 func rest(_ list: ArraySlice<T>) -> ArraySlice<T> {
    return list.dropFirst()
}
 

Ошибка:

 error: repl.swift:1:48: error: use of undeclared type 'T'
func rest(_ list: ArraySlice<T>) -> ArraySlice<T> {
                                               ^
 

Комментарии:

1. В ArrayList стандартной библиотеке Swift нет типа, где и как вы его объявляете?

2. Разве это не должно быть func rest(_ list: Array<Int>) -> Array<Int> {

3. Странно, что вы ожидаете, что Java будет работать в Swift…

4. Моя ошибка, ребята!! Я пытался что-то сделать прямо перед тем, как вставить проблему … и скопировал и вставил не то

5. func rest<T: Integer>(_ list: ArraySlice<T>) -> ArraySlice<T> { return list.dropFirst() }

Ответ №1:

Вам нужно указать общий параметр ArraySlice , просто используя as ArraySlice<T> не объявляет T :

 func rest<T>(_ list: ArraySlice<T>) -> ArraySlice<T> {
    return list.dropFirst()
}
 

Или:

 class MyClass<T> {
    func rest(_ list: ArraySlice<T>) -> ArraySlice<T> {
        return list.dropFirst()
    }
}