【问题标题】:Can someone explain this ruby code有人可以解释这个红宝石代码吗
【发布时间】:2014-08-31 04:03:51
【问题描述】:

谁能解释一下

具体来说,“

return ( letter * (self / value))
    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

我只见过“

【问题讨论】:

  • 运行时会发生什么?
  • @limelights 它返回给定fixnum 的罗马值:123.roman 返回CXXIII

标签: ruby


【解决方案1】:

这是一个字符串连接运算符。请参阅Ruby String class docs. 通常,在 Ruby 和其他编程语言中,&lt;&lt; 运算符代表某种连接、附加或推送到某些现有数据。

【讨论】:

    【解决方案2】:

    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" 
    

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多