有人可以解释<<<<用于这个递归函数?
具体而言,“<<<在
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;”用于将一个对象推到一个数组上,我觉得这不会发生在这里。
答案 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"