在 Swift 范围内找不到类型“T”

Mar*_*duk 4 arrays generics swift

我声明我已经有几年没有用 Swift 编程了,不久前我创建了这个扩展来随机访问数组的元素,但我收到错误“无法在范围内找到类型‘T’”

extension Array {
    func randomElement() -> T {
        let index = Int(arc4random_uniform(UInt32(self.count)))
        return self[index]
    }
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我也尝试将数组放入其中,但总是遇到相同的错误

Sha*_*run 5

Array 上的泛型拼写为 Element 而不是 T

如果跳转到Array的定义就可以看到:

@frozen public struct Array<Element> {
Run Code Online (Sandbox Code Playgroud)

所以你的函数需要返回一个 Element 而不是 T