Ruby 遍历字符串的每个字母

Ruby 遍历字符串的每个字母,ruby,iteration,Ruby,Iteration,我试图遍历字符串中的每个字母以打印出一个单词 greeting = "hello" extract = 0 letter = greeting[extract] while extract < greeting.length p letter extract += 1 end 问候语=“你好” 提取=0 信=问候[摘录] 而提取

我试图遍历字符串中的每个字母以打印出一个单词

greeting = "hello"
extract = 0
letter = greeting[extract]

while extract < greeting.length
  p letter
  extract += 1
end
问候语=“你好” 提取=0 信=问候[摘录] 而提取
结果是
“h”、“h”、“h”、“h”、“h”、“h”
而不是hello。我做错了什么?

您正在循环中打印一个已初始化且其值从未更改的变量,这就是为什么总是打印“h”

当“计数器”(
extract
)不断增加时,如果在循环内打印它,情况会有所不同:

greeting = "hello"
extract = 0

while extract < greeting.length
  p greeting[extract]
  extract += 1
end

您正在循环内打印一个已初始化且其值从未更改的变量,这就是为什么总是打印“h”

当“计数器”(
extract
)不断增加时,如果在循环内打印它,情况会有所不同:

greeting = "hello"
extract = 0

while extract < greeting.length
  p greeting[extract]
  extract += 1
end

还有一个内置的方法,
each_char
也有一个内置的方法,
each_char
问候语。each_char{c | p c}
可能更容易记住。顺便说一句,将一个块传递给
chars
是不推荐使用的,并且会导致一个警告。现在我看到“如果给定一个块,这是一个不推荐使用的表单,它的工作原理与每个字符相同。”我不知道这一点。谢谢@Stefan
greeting.each|char{| c | pc}
可能更容易记住。顺便说一句,将一个块传递给
chars
是不推荐使用的,并且会导致一个警告。现在我看到“如果给定一个块,这是一个不推荐使用的表单,它的工作原理与每个字符相同。”我不知道这一点。谢谢@Stefan!