1..self在这个红宝石代码中意味着什么?

时间:2014-11-29 01:37:31

标签: ruby

我似乎无法弄清楚1..self在这段代码中意味着什么......更具体地说,我无法弄清楚这个范围内的自我回报是什么? (我知道1 ... 10表示例如

class Fixnum 
  def palindrome_below i
    (1...self).select{|f| f.to_s(i) == f.to_s(i).reverse}
  end  
end

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

palindrome_below定义是Fixnum上的实例方法。实例方法是可以在的实例上调用的函数(与类方法相反,类方法在类本身上调用)。

根据此代码,Fixnum的任何实例都可以访问palindrome_below方法,其中self引用Fixnum实例本身(和i指的是传递给方法调用的参数。

14.palindrome_below(5)
#=> [1, 2, 3, 4, 6, 12] # `self` refers to the Fixnum `14`

因此,下面的输出与上面的例子相同:

(1...14).select{|f| f.to_s(5) == f.to_s(5).reverse}
#=> [1, 2, 3, 4, 6, 12]

答案 1 :(得分:0)

x...y创建Range,间隔为(x, y]。在您的上下文中,self指的是Fixnum

的实例

任何可以在一个本地机器词中表示的整数都是Fixnum的实例。这是一个简单的例子:

class Fixnum
  def double
    self * 2
  end
end

# self is `2`
2.double # => 4

# self is `8`
8.double # => 16