有人可以解释这个红宝石代码

时间:2014-07-09 23:41:00

标签: ruby

有人可以解释<<<<用于这个递归函数?

具体而言,“<<<在

return(字母*(自/值))<< (自我%值).roman if value< = self

    class Fixnum
      ROMAN_NUMBERS = {
        1000 => "M",  
         900 => "CM",  
         500 => "D",  
         400 => "CD",
         100 => "C",  
          90 => "XC",  
          50 => "L",  
          40 => "XL",  
          10 => "X",  
            9 => "IX",  
            5 => "V",  
            4 => "IV",  
            1 => "I",  
      }

    def roman
        return '' if self == 0
        ROMAN_NUMBERS.each do |value, letter|
          return ( letter * (self / value)) << (self % value).roman if value <= self
        end
        return (self % value).roman
      end
    end

我只见过“&lt;&lt;”用于将一个对象推到一个数组上,我觉得这不会发生在这里。

2 个答案:

答案 0 :(得分:2)

它是一个字符串连接运算符。请参阅Ruby String class docs.通常,在Ruby和其他编程语言中,<<运算符代表某种连接,附加或推送到某些已存在的数据。

答案 1 :(得分:1)

&LT;&LT;也在String类中定义:http://www.ruby-doc.org/core-2.1.2/String.html#method-i-3C-3C

1.9.3-p547 :003 > str = "M" * 3
 => "MMM" 
1.9.3-p547 :005 > str << "hello"
 => "MMMhello"