小编Fra*_*kie的帖子

Swift 中的泛型

我正在学习 Swift 中的泛型。对我来说,这个话题很难理解。在我正在读的书中,关于泛型有两个挑战:

第一个挑战:它要求编写一个函数findAll(_:_:),该函数接受符合 Equatable 协议的任何类型 T 的数组和单个元素(也是 T 类型)。findAll(_:_:)应该返回一个整数数组,对应于数组中找到该元素的每个位置。例如,findAll([5,3,7,3,9], 3]应该返回[1,3].

第二个挑战:修改findAll(_:_:)为接受 Collection 而不是数组,并给出提示“您需要将返回类型从 [Int] 更改为 Collection 协议关联类型的数组”

这就是我为第一个挑战所做的

func findAll<T:Equatable> (_ first: [T], _ second: T) -> [Int] {
var array = [Int]()

for i in 0..<first.count {
    if first[i] == second {
        array.append(i)
        }
    }   
return array
}
Run Code Online (Sandbox Code Playgroud)

对于第二个挑战,我正在考虑的是一个可以传递集合(可以是数组、字典或集合)的通用函数。但是对于Set类型,由于它没有定义的顺序,如何找到Set中项目的位置?

谢谢。

generics swift

5
推荐指数
1
解决办法
2174
查看次数

带下划线的变量声明

我在Youtube的一些视频中看过这个.

class Student {

    private var _name: String!
    private var _studentID: Int!

    var name: String {
        return _name
    }

    var studentID:Int {
        return _studentID
    }

    init(name: String, studentID: Int) {
        self._name = name
        self._studentID = studentID
    }
}
Run Code Online (Sandbox Code Playgroud)

他们为什么这样做(添加_name_studentID)而不是:

class Student {

    private var name: String!
    private var studentID: Int!

    init(name: String, studentID: Int) {
        self.name = name
        self.studentID = studentID
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢你.

variables declaration swift

3
推荐指数
1
解决办法
787
查看次数

标签 统计

swift ×2

declaration ×1

generics ×1

variables ×1