1

我只是在学习 ruby​​,这似乎是我在这里做的一个简单的错误,对吗?

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>'
4

1 回答 1

5

您需要将行更改str.to_sstr=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
于 2013-10-14T04:57:51.353 回答