迭代字符串的每个字母

kel*_*l.o 1 ruby iteration

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

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

while extract < greeting.length
  p letter
  extract += 1
end
Run Code Online (Sandbox Code Playgroud)

结果是"h", "h", "h" ,"h", "h"而不是你好.我究竟做错了什么?

Seb*_*lma 5

你在循环内打印一个已经初始化的变量,它的值从未改变过,这就是为什么总是打印"h".

如果你在循环中打印它会有所不同,因为"counter"(extract)会增加:

greeting = "hello"
extract = 0

while extract < greeting.length
  p greeting[extract]
  extract += 1
end
Run Code Online (Sandbox Code Playgroud)

如果您想采取另一步并使用内置的Ruby函数,您可以使用each_char:

greeting = 'hello'
greeting.each_char(&method(:p))
# same output
Run Code Online (Sandbox Code Playgroud)