【问题标题】:Swift: error: use of undeclared type 'T'Swift:错误:使用未声明的类型“T”
【发布时间】:2016-10-13 21:55:24
【问题描述】:

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> {
                                               ^

【问题讨论】:

  • Swift 标准库中没有 ArrayList 类型,你在哪里以及如何声明它?
  • 不应该是func rest(_ list: Array&lt;Int&gt;) -&gt; Array&lt;Int&gt; {
  • 奇怪的是你会期望 java 在 Swift 中工作......
  • 我错了伙计们!!在我粘贴问题之前我正在尝试一些事情......然后复制并粘贴了错误的东西
  • func rest&lt;T: Integer&gt;(_ list: ArraySlice&lt;T&gt;) -&gt; ArraySlice&lt;T&gt; { return list.dropFirst() }

标签: swift generics swift3


【解决方案1】:

需要指定ArraySlice的泛型参数,只使用asArraySlice&lt;T&gt;不声明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()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2015-10-28
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多