这是我的代码:
func removeFromString( _ s: inout String, Character c:Character) -> Int {
var s1 = s
var nRemoved = 0
while let ix = s1.characters.index(of: c) {
s1.removeSubrange(ix...ix)
nRemoved += 1
}
return nRemoved
}
var s2 = "everest"
let resb = removeFromString(&s2, Character: Character("e"))
Run Code Online (Sandbox Code Playgroud)
我的问题是这应该在使用参数后将s2更改为"vrst".但它根本没有改变它.我在做什么错了?或者我期待错误的输出?帮忙.谢谢.inout
s
var s2
这些工具可用吗?我有一个苹果开发者帐户,我下载了Xcode 9 beta,我从https://developer.apple.com/download/获得.
Xcode 9开发人员工具出来了吗?
根据@matt 使用的这个精彩答案dispatch_after
,我在操场上尝试了代码,它工作正常(没有错误).但是,当我尝试执行向后兼容时DispatchTime.now()
,iOS 10
只有这样才可用:
func delay( _ delay: Double, closure: () -> ()){
guard #available(iOS 10, *) else {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
return
}
let when = DispatchTime.now() + delay
DispatchQueue.main.after(when: when, execute: closure)
}
Run Code Online (Sandbox Code Playgroud)
编译器提供修复DISPATCH_TIME_NOW
to Replace "DISPATCH_TIME_NOW" with "dispatch_time_t(DISPATCH_TIME_NOW)"
并抛出错误说
无法将'Int'类型的值转换为预期的参数类型'dispatch_time_t'(又名'UInt64')
我尝试修复它,因为编译器提供但最终导致更多错误.我应该如何在这里使用向后兼容性?我在做什么错了?请帮助,谢谢!