使用我们自己的ruby自定义方法在ruby中创建对象

时间:2015-06-09 14:34:11

标签: ruby metaprogramming

我需要在ruby中使用自己的自定义方法创建一个对象,而不是默认的new()。

obj = User.new

如果我需要使用generate()为用户创建一个对象,如何实现。 所以当我输入

obj = User.generate

它应该创建User的对象。

我理解的一种方法是使用alias关键字对方法进行别名。

虽然我不确定。

是否有任何建议。??

4 个答案:

答案 0 :(得分:4)

正如你所说,你可以alias_method

 class << User
   alias_method :generate, :new
 end

您也可以委派:

class User
  def self.generate(*args, &blk)
    new(*args, &blk)
  end
end

或者,您可以重新实施Class#new所做的事情:

class User
  def self.generate(*args, &blk)
    obj = allocate
    obj.send(:initialize, *args, &blk)
    obj
  end
end

答案 1 :(得分:2)

class User
  def self.generate
    new
  end
end

答案 2 :(得分:0)

generate

中创建一个名为User的类方法

答案 3 :(得分:0)

您可以调用您的特定方法,并在其中调用self.new

class User
  def self.generate
    self.new
  end
end

obj = User.generate