我为不同的项目编写了一个Array扩展
extension Array {
func distinct<T: Equatable>() -> [T]{
var unique = [T]()
for i in self{
if let item = i as? T {
if !unique.contains(item){
unique.append(item)
}
}
}
return unique
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试调用此函数,如下所示
let words = ["pen", "Book", "pencile", "paper", "Pin", "Colour Pencile", "Marker"]
words.distinct()
Run Code Online (Sandbox Code Playgroud)
但它给出错误"通用参数'T'无法推断迅速"
let word = "sample string"
let firstLetter = Character(word.substringToIndex(advance(word.startIndex,1)).uppercaseString)
Run Code Online (Sandbox Code Playgroud)
我从教程中得到了上面的例子.任何人都可以通过"advance"知道它们的含义以及"substringToIndex"和"substringWithRange"之间的区别.