2

我有这堂课:

class Option
  # ORM's properties
  def self.get( id )
    # some ORM action
    "result of #{id}"
  end
end

我可以打电话Option.get :setting来接收结果。Option(:setting)如果我想调用like in String(42)(返回"42")以获得与 相同的结果,我该如何编写类Option#get

4

1 回答 1

1

String实际上是内核模块中的一个方法:

字符串(arg) → 字符串

通过调用其方法将arg转换为 a 。Stringto_s

您会在同一个地方找到Array、和朋友。Float内核包含在 Object 中,这就是所有像普通全局函数一样使用的方法所在的地方。你可以猴子补丁内核:

module Kernel
  def Option(id)
    Option.get(id)
  end
end

或者用这样的方法制作你自己的模块,如果他们想访问say,让人们包含它Option(11)

于 2012-05-01T06:44:14.350 回答