这个功能如何运作?

时间:2015-10-04 20:04:03

标签: swift2

我正在学习使用资源在swift中编码,在那里我看到了这个函数,它反转了参数中给出的字符。 这是代码:

func reverseIt(s: String) -> String {
    var rst = ""
    for char in s.characters {
       rst = "\(char)" + rst
    }
    return rst
}

我只是想知道它是如何设法扭转它的,因为我不会在这里做任何具体的事情

3 个答案:

答案 0 :(得分:2)

使用" Hello"在脑海中逐步完成它。举个例子:

第一次rst为空,变为"H" + rst"H"(因为rst为空)。

下一次,第二个字符"e"被取消,rst变为"e" + rst "e" + "H""eH"。你可以看到它的发展方向。

答案 1 :(得分:0)

该功能非常易于理解,请参阅此行rst = "\(char)" + rst

最初是一个空字符串,然后在for语句的每次迭代中,在字符串的开头附加每个字符(为for中的变量获得,然后使用字符串插值)。

我希望这对你有所帮助。

答案 2 :(得分:0)

它反转字符串的原因是由于赋值(=)运算符右侧的代码顺序。如果代码是这样的:

rst = rst + "\(char)"

那么结果就不会逆转。如果这无助于清除它,那就让我们一步一步来。使用您的代码:

rst = "\(char)" + rst

对于for-in循环的每次传递,值都是这样的:

first pass  - rst would get char ("h") + rst ("")     -> "h"
second pass - rst would get char ("e") + rst ("h")    -> "eh"
third pass  - rst would get char ("l") + rst ("eh")   -> "leh"
fourth pass - rst would get char ("l") + rst ("leh")  -> "lleh"
fifth pass  - rst would get char ("o") + rst ("lehh") -> "olleh"

这会在你的脑海中清楚地表明这一点吗?