我正在学习使用资源在swift中编码,在那里我看到了这个函数,它反转了参数中给出的字符。 这是代码:
func reverseIt(s: String) -> String {
var rst = ""
for char in s.characters {
rst = "\(char)" + rst
}
return rst
}
我只是想知道它是如何设法扭转它的,因为我不会在这里做任何具体的事情
答案 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"
这会在你的脑海中清楚地表明这一点吗?