2015-01-02 16 views
-1

我是一個剛剛嘗試學習的初學ruby程序員。我一直在玩這些我自己編寫的代碼。我試圖在課堂中使用titleize方法,但我得到一個錯誤。當我使用大寫方法時,我不會收到錯誤。我究竟做錯了什麼?我只是試圖將標題字符串中每個單詞的首字母大寫。我正在尋找最簡單的答案,不一定是最好的或最短的代碼。謝謝!在Ruby中,我無法使用.titleize在類中初始化

class Movie 
    def initialize(title, rank, year) 
    @title = title.titleize 
    @rank = rank 
    @year = year 
    end 
    def to_s 
    "#{@rank}: #{@title} (#{@year})" 
    end 
end 

movie1 = Movie.new("the godfather", 1, 1972) 
movie2 = Movie.new("gladiator", 2, 2000) 
movie3 = Movie.new("the godfather part 2", 3, 1974) 
movie4 = Movie.new("the dark knight", 4, 2008) 
movie5 = Movie.new("return of the jedi", 5, 1983) 
movie6 = Movie.new("star wars", 6, 1977) 
movie7 = Movie.new("meet joe black", 7, 1998) 
movie8 = Movie.new("back to the future", 8, 1985) 
movie9 = Movie.new("the bourne identity", 9, 2002) 
movie10 = Movie.new("a lot like love", 10, 2005) 
movies = [movie1, movie2, movie3, movie4, movie5, movie6, movie7, movie8, movie9, movie10] 
puts "Robbie's Top #{movies.size} Movies:" 
puts movies 
+2

你得到了什麼錯誤?是否還有'titleize'方法?我不認爲有...... – iamnotmaynard

+0

http://ruby-doc.org/core-2.2.0/String.html – iamnotmaynard

+0

4:在'initialize'中:未定義的方法'titleize'爲「教父」:String (NoMethodError)from top_ten_movies.rb:14:in new from top_ten_movies.rb:14:in'

' – ibadukefan

回答

0

ruby​​中的String類沒有titleize方法。

您可以擴展String類以具有titleize方法或單獨使用此函數。

class String 
    def titleize 
    self.split(" ").map{|word| word.capitalize}.join(" ") 
    end 
end 
+0

那麼我會在哪裏調用該方法? – ibadukefan

+0

要麼把我給電影課上面的代碼。或者把它放在一個單獨的ruby文件中並將其包含在電影類中(以便它可以在其他文件中重用)。此代碼擴展了String類以具有titleize方法。所以你的代碼在初始化方法中會起作用。 – rakeshbs

+0

是的,那就是我想要的。優秀。謝謝! – ibadukefan

相關問題