我可以覆盖`。<digit>`来指向数组的索引吗?

时间:2016-05-06 08:30:29

标签: arrays ruby methods

.<digit>表示将数字解释为float而不是整数。

我是否可以覆盖.<digit>让它将索引指向数组,以便以下内容有效?

c = [1, 2, 3, 4, 5, 6]
c.0 # => 1
c.3 # => 4

3 个答案:

答案 0 :(得分:2)

没有。方法名称不能以Ruby中的数字开头。有关Ruby方法名称限制的更多信息here

答案 1 :(得分:2)

不,你不能。这是浮点数的字面表达式的一部分。它不是方法调用。它不是在Ruby语法级别完成的。

答案 2 :(得分:0)

正如其他答案已经说明的那样,无法将数字覆盖为方法,但您可以使用括号作为空方法。

class Array
  def method_missing(m ,*args, &block)
    # m will be 'call'
    self[args[0]] if args[0].is_a?(Fixnum)
  end
end


irb(main):009:0> [1,2,3,4,5].(0)
=> 1
irb(main):010:0> [1,2,3,4,5].(2)
=> 3