ruby - 这种迭代反向方法在 Ruby 中如何工作?

标签 ruby reverse

在过去的 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 是一种很棒的语言选择,拥有繁荣和友好的社区,这种 forwhile 循环的风格是大多数语言的主要内容,非常值得学习和实践。但是您应该知道,方法#1 中使用的逻辑不是惯用的 Ruby;是的,它会很好地工作,但我认为大多数有经验的 Ruby 开发人员会在查看该代码时说“Ick。你为什么不直接获取数组并在其上运行 .each?” Ruby 是一种非常灵活的语言,但某些代码模式已成为常见或“最喜欢”的做法,根据我的经验,使用整数逐步执行 while 循环的结构不是其中之一他们。

请记住这一点,一旦您完成了当前的学习 Material ,请考虑四处寻找以“Ruby 方式”教授您 Ruby 的类(class)。

关于ruby - 这种迭代反向方法在 Ruby 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415358/

相关文章:

ruby - 正则表达式:如何替换除单词/模式序列之外的所有字符?

ruby - 如何在 Ruby 中将 Strftime 转换为字符串?

excel - Excel 中的反向匹配搜索

java - 从最后一个字符开始向后迭代 3

ruby - 检查 gem 的系统依赖性

ruby - 如何关闭和删除 Ruby 中的文件?

ruby-on-rails - 如何将现有模型(包括插入的行)从可空列迁移到不可空列

javascript - JavaScript array.reverse() 是如何工作的?

c++ - 从第一原则反转字符串 - 怎么了?

audio - 如何使用处理反转音频波