返回对象的函数

时间:2015-10-03 22:46:40

标签: ruby

我需要一个返回car()对象的函数Car。具有以下代码的文件有效:

class Car
  def something
    true
  end
end

def car
  Car.new
end

将函数放在类之外的同一文件中是对的吗?

2 个答案:

答案 0 :(得分:1)

技术上?是的,没关系。

但是听起来我觉得你正在寻找更多的东西工厂方法。这是一个很好的阅读:Factory methods in Ruby

如果您想创建使用自定义参数创建新对象的函数,这是一个很好的做法。

答案 1 :(得分:0)

您可以使用Car inside Car类

class Car
  def initialize(brand, name)
    @brand = brand
    @name = name
  end

  def something_cool
    puts "My #{@name} from #{@brand} does cool things"
  end

  def self.ferrari
    Car.new("Ferrari", "F-40")
  end 
end

然后你可以使用:

ferrari = Car.ferrari
ferrari.something_cool

一些参考:Creational patterns