2013-02-20 74 views
0

我正試圖在ruby中構建一個相對簡單的應用程序。但是,我無法讓我的對象返回除0以外的任何其他信息時調用puts obj.to_s。我知道代碼的質量可能很差(並不介意任何提示)。爲什麼我的to_s方法在ruby中返回0?

請幫忙!

class Docpart 
    def Docpart.new(inputAsString,typeAsInteger) 
@value = inputAsString 
@type = typeAsInteger.to_i # 0 = title, 1 = text, 2 = equation (can't be done yet), 3 = table 
    end 

    def Docpart.to_s 
return "Type is #{@type}, value is #{@value}" 
    end 
end 

module Tests 
    def Tests.test1() 
filetree = Array.new(0) 
filetree.push(Docpart.new("Title",0)) 
filetree.each{|obj| puts obj.to_s} 
return filetree[0] 
    end 
end 

puts Tests.test1.to_s 
gets.chomp 

回答

3

因爲您定義的類方法to_s不是實例一。在Ruby中編寫構造函數也有點不同。你需要這樣這樣寫:

class Docpart 
    def initialize(inputAsString,typeAsInteger) 
    @value = inputAsString 
    @type = typeAsInteger.to_i # 0 = title, 1 = text, 2 = equation (can't be done yet), 3 = table 
    end 

    def to_s 
    "Type is #{@type}, value is #{@value}" 
    end 
end 

module Tests 
    def self.test1 
    filetree = [] 
    filetree << Docpart.new("Title",0) 

    filetree.each{ |obj| puts obj.to_s } 

    filetree[0] 
    end 
end 

puts Tests.test1.to_s 
gets.chomp 

PS讀過什麼書關於Ruby和像Githubbersbbatsov one任何風格指南。

+2

對於styleguide鏈接+1! – 2013-02-20 22:05:45

+0

謝謝你的作品像一場夢。 – 2013-02-20 22:32:29

相關問題