2013-10-14 80 views
1

我剛剛學習紅寶石,這似乎是一個容易的錯誤,我在這裏做的對嗎?未定義的方法'反向'爲500

def palindromic(str) 
    str.to_s 
    if str.reverse == str 
     puts "it is a palindromic number!" 
    end 
end 

palindromic(500) 

相反,我得到一個錯誤

Project4.rb:5:in `palindromic': undefined method `reverse' for 500:Fixnum (NoMet 
hodError) 
     from Project4.rb:10:in `<main>' 

回答

5

您需要將線str.to_s更改爲str=str.to_s。一個例子來告訴你爲什麼這麼低於:

num = 12 
num.to_s # => "12" 
num # => 12 
num=num.to_s 
num # => "12" 

基本上String#to_s變化接收器實例String。但實例如果接收機已經是String例如,在這種情況下,接收器本身將被退回。

ar = [1,2] 
ar.object_id # => 77603090 
ar.to_s.object_id # => 77602480 
str = 'Hello' 
str.object_id # => 77601890 
str.to_s.object_id # => 77601890 
+1

謝謝!我完全錯過了基本知識。 – cvu