片段是什么意思?

Kis*_*tty 0 ruby

我正在使用Ruby脚本语言.我这里有一个片段.只是想知道循环中发生了什么.这是我的代码

#!/usr/bin/ruby

presidents = ["Ford", "Carter", "Reagan", "Bush1", "Clinton", "Bush2"]

for ss in 0...presidents.length
  print ss, ": ", presidents[presidents.length - ss - 1], "\n";
end
Run Code Online (Sandbox Code Playgroud)

我知道这是以相反的顺序打印数组,但我的目的是知道发生了什么

"presidents[presidents.length - ss - 1]"
Run Code Online (Sandbox Code Playgroud)

请帮我理解这个.我真的很困惑.

tok*_*and 6

这意味着,无论谁编写这段代码,他仍然在学习Ruby :-p.这更加惯用,我希望,不言自明:

presidents.reverse_each.with_index do |name, index|
  puts "#{index}: #{name}"
end
Run Code Online (Sandbox Code Playgroud)

关于presidents[presidents.length - ss - 1]:ss从0开始,所以length-0-1 = length-1- >最后一个元素presidents.在循环的最后一次迭代中length - (length-1) -1 = 0,所以显示了第一个元素presidents.简单的反面,没什么特别的.

  • `.reverse_each.with_index`避免了额外的数组. (2认同)