为什么lazy在这里使用?
extension SequenceType {
func mapSome<U>(transform: Generator.Element -> U?) -> [U] {
var result: [U] = []
for case let x? in lazy(self).map(transform) {
result.append(x)
}
return result
}
}
Run Code Online (Sandbox Code Playgroud)
此扩展使用返回可选的转换函数,并返回仅包含未转换为nil的值的数组
为什么不用self.map(transform)?这里有懒惰吗?
这是一个简单的代码,让我们找出一个字符串是否包含一个dot字符(我们不知道有多少个,我们只知道它包含它):
var number: String = "3.14"
if number.contains(".") {
print("The string contains a dot character")
} else {
print("There's no dot character")
}
Run Code Online (Sandbox Code Playgroud)
但想象一下用户错误地将 2 或 3 个点排成一行的情况,如下所示:
var number: String = "3...14"
Run Code Online (Sandbox Code Playgroud)
如何判断一个字符串包含一个dot还是多个?
如何计算字符串中所有的点?