问题
.<digit>
means to interpret the number as a float instead of an integer.
Can I override .<digit>
to let it point the index in an array so that the following will work?
c = [1, 2, 3, 4, 5, 6]
c.0 # => 1
c.3 # => 4
回答1:
No. A method name can't begin with a number in Ruby. More about Ruby method names restrictions here.
回答2:
No you can't. That is part of the literal expression for floats. It is not a method call. It is not done at Ruby syntax level.
回答3:
As the other answers already told, it is not possible to override the number as method, but you can use parenthesis for an empty method.
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
来源:https://stackoverflow.com/questions/37067744/can-i-override-digit-to-point-at-an-index-for-an-array