问题理解C风格的红宝石循环

Fre*_*red 2 ruby

我觉得.each do很难得坚持,所以我希望为循环语法经常使用C这似乎不工作,所以我尝试了一段时间,但仍然出现错误.

我试过这个.

i = 0
while i < SampleCount
    samples[i] = amplitude
    amplitude *= -1
    i++
end
Run Code Online (Sandbox Code Playgroud)

我在这里得到关于最终声明的投诉.

Pet*_*ter 8

您的代码有几个问题.我建议不要仅仅修复错误,而是要长期学习Ruby方法 - 它将为您节省时间和精力.在这种情况下,它是

5.times do |i|
  samples[i] = amplitude  # assumes samples already exists and has 5 entries.
  amplitude *= -1
end
Run Code Online (Sandbox Code Playgroud)

如果你坚持保持类似的风格,你可以这样做:

samples = []
i = 0
while i < sample_count
    samples << amplitude  # add new item to array.
    amplitude *= -1
    i += 1                # you can't use ++.
end
Run Code Online (Sandbox Code Playgroud)

请注意SampleCount,根据Ruby惯例,首字母大写字母表示常量,我猜这不是你的意思.

  • 是的,我知道你对C很熟悉,但使用类似C语法并不是一个好主意 - 你可以看到C和Ruby之间的差异让你陷入困境. (5认同)