2015-10-03 235 views
0

我需要返回Car對象的函數car()。具有以下代碼的文件有效:返回對象的函數

class Car 
    def something 
    true 
    end 
end 

def car 
    Car.new 
end 

將函數放在類之外的同一文件中是否正確?

回答

1

技術上?是的,那很好。

但是這聽起來像你正在尋找更多的ala 工廠方法。這是一個很好的閱讀:Factory methods in Ruby

如果您想要創建具有自定義參數的新對象的函數,這是一種很好的做法。

0

你可以用廠車類中

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