在过去的 2 个月里,我一直在构建小程序,同时还参加了一些在线类(class)来帮助我学习编码。进展顺利,我觉得我要问的问题比我写的一些东西更简单。
以下是反转字符串的两种方法。我理解方法2,我不明白方法1是如何工作的。他们都给出相同的输出。谁能解释第一种方法的工作原理?
1.
def reverse(string)
reversed_string = ""
i = 0
while i < string.length
reversed_string = string[i] + reversed_string
i += 1
end
return reversed_string
end
2.
def rev(string)
string.reverse
end
最佳答案
我鼓励您在终端中打开 irb
并试验此方法的每一行会产生什么效果。您可以阅读世界上所有的解释,但您只能通过输入内容并在屏幕上查看输出来深入了解该语言的工作原理。
字符串基本上是一个数组或一长串字符,例如。 [“H”、“e”、“l”、“l”、“o”]
。方法 #1 设置一个 while
循环,对字符串中的每个字符重复执行一次操作。更具体地说,它获取每个位置的字符 (string[i]
) 并将其添加到“结果”字符串 (reversed_string
) 的开头>) 逐渐增长,直到与原始字符串一样长。除了每个字母都被添加到结果字符串的开头之外,所以如果原始字符串是“Hello!”,结果字符串将以“H”
开头,然后将变为 "eH"
,然后是 "leH"
,依此类推。
大局说明:如果您是第一次学习编程,这一切都很好; Ruby 是一种很棒的语言选择,拥有繁荣和友好的社区,这种 for
或 while
循环的风格是大多数语言的主要内容,非常值得学习和实践。但是您应该知道,方法#1 中使用的逻辑不是惯用的 Ruby;是的,它会很好地工作,但我认为大多数有经验的 Ruby 开发人员会在查看该代码时说“Ick。你为什么不直接获取数组并在其上运行 .each
?” Ruby 是一种非常灵活的语言,但某些代码模式已成为常见或“最喜欢”的做法,根据我的经验,使用整数逐步执行 while
循环的结构不是其中之一他们。
请记住这一点,一旦您完成了当前的学习 Material ,请考虑四处寻找以“Ruby 方式”教授您 Ruby 的类(class)。
关于ruby - 这种迭代反向方法在 Ruby 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415358/