请参阅以下代码:
"S".upto("Z") {|word| puts word}
显示正确的结果。
但是当我使用.downto
方法时,没有结果。
"Z".downto("S") {|word| puts word}
为什么?
答案 0 :(得分:2)
它不起作用,因为String
没有downto方法。它只有upto
。
答案 1 :(得分:1)
Ruby中的Strings没有downto方法(即使有这样的数字方法)。 (检查:http://ruby-doc.org/core-2.0/String.html)
你可能会问,“为什么不呢?”对此我没有答案。
答案 2 :(得分:1)
.downto
对象没有String
方法,但您可以这样做:
('S'..'Z').to_a.reverse.each {|word| puts word}
OR
"S".upto("Z").to_a.reverse.each {|word| puts word}
达到预期的效果。
答案 3 :(得分:1)
,有一个很好的理由:没有为String Class声明该名称的方法!当你不确定时,请记得查找类/方法的文档。
但是有一个解决方法,不用担心,只需用你自己的方法扩展类。我的尝试是:
class String
def downto value
v = value.upto self
v.to_a.reverse.each
end
end
puts "S".upto("Z").collect {|x| x}
puts "Z".downto("S").collect {|x| x}
会渲染
Upto : ["S", "T", "U", "V", "W", "X", "Y", "Z"]
Downto: ["Z", "Y", "X", "W", "V", "U", "T", "S"]