我似乎无法弄清楚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
感谢您的帮助。
答案 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