removeSubrange 产生“()”,而不是预期的上下文结果类型“字符串”

Posted

技术标签:

【中文标题】removeSubrange 产生“()”,而不是预期的上下文结果类型“字符串”【英文标题】:removeSubrange produces '()', not the expected contextual result type 'String' 【发布时间】:2017-08-25 17:00:09 【问题描述】:
static func trimBefore(string: inout String, char: Character) -> String 

    var newString = ""

    if let charRange = string.range(of: String(char)) 
        newString = string.removeSubrange(string.startIndex..<charRange.upperBound)
    
    return newString


static func trimAfter(string: inout String, char: Character) -> String 

    var newString = ""

    if let charRange = string.range(of: String(char)) 
        newString = string.removeSubrange(charRange.lowerBound..<string.endIndex)
    
    return newString

我收到标题中的错误。为什么会这样?

【问题讨论】:

removeSubrange 不返回任何内容,它会改变您调用它的字符串 【参考方案1】:

当我尝试 print(extInfo.trimBefore(char: ".") 时问题就开始了。这返回了 ()。

当我把它改成:

extInfo.trimAfter(char: ".")
print(extInfo)

它按预期工作。

mutating func trimBefore(char: Character) 

    if let charRange = self.range(of: String(char)) 
        self.removeSubrange(self.startIndex..<charRange.upperBound)
    


mutating func trimAfter(char: Character) 

    if let charRange = self.range(of: String(char)) 
        self.removeSubrange(charRange.lowerBound..<self.endIndex)
    

【讨论】:

以上是关于removeSubrange 产生“()”,而不是预期的上下文结果类型“字符串”的主要内容,如果未能解决你的问题,请参考以下文章

如果我在 JQM 中使用 `touch` 事件而不是 `click' 事件,是不是会产生性能差异

Dropzone getAcceptedFiles() 产生 [object File] 而不是 file

Python:有没有办法让 swipl 查询产生值 true 而不是 ?

分类器产生连续值而不是不同的标签

Swift 将数组数组映射到元组数组 - 'map' 产生 [T],而不是预期的

Flink Streaming Python API - reduce() 产生增量结果而不是最终值