这是我的代码:
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".但它根本没有改变它.我在做什么错了?或者我期待错误的输出?帮忙.谢谢.inoutsvar s2
Luk*_*uke 18
通过移动s到s1要制作一个副本,因为String是一个结构,而所有的结构都是按值传递.所以最后你只是改变s1而不是传入的字符串s.只需删除它:
func removeFromString( _ s: inout String, Character c:Character) -> Int {
var nRemoved = 0
while let ix = s.characters.index(of: c) {
s.removeSubrange(ix...ix)
nRemoved += 1
}
return nRemoved
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9736 次 |
| 最近记录: |