为什么.downto方法不起作用?

时间:2013-07-10 16:13:27

标签: ruby

请参阅以下代码:

"S".upto("Z") {|word| puts word}

显示正确的结果。

但是当我使用.downto方法时,没有结果。

"Z".downto("S") {|word| puts word}

为什么?

4 个答案:

答案 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"]