#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()
}
}