如何在Ruby中本地实现像[]这样的方法?

use*_*795 4 ruby arrays methods function

因此,如果像[]和[] =这样的index_acessor方法没有硬编码到解释器中,有没有办法直接在Ruby中定义这样的方法?换句话说,如何定义方法名称,其中param位于方法名称"[*]"的一部分内

我可以发誓我已经在Pickaxe或Ruby Way中找到了这个,但是几小时的页面翻转让我空手而归

Dav*_*son 5

class Foo
  def []=(k, v)
  end

  def [](k)
  end
end
Run Code Online (Sandbox Code Playgroud)

EDIT1:

尽管它可能看起来不像定义,但上面定义的方法可以像这样调用:

f = Foo.new
f[1] = 2
f[3]
Run Code Online (Sandbox Code Playgroud)

  • 我认为OP并没有具体询问`[]`......他们想定义,比如说'obj <thing>`,并且不知道如何让ruby调用这样的方法.AFAIK,它是不可能的,因为解释器对它所处理的少数情况只有特殊的规则. (2认同)