未定义的方法'反向'为500

cvu*_*cvu 1 ruby

我刚刚学习红宝石,这似乎是我在这里做的一个容易的错误吗?

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

palindromic(500)
Run Code Online (Sandbox Code Playgroud)

相反,我得到一个错误

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

Aru*_*hit 5

您需要将行更改str.to_sstr=str.to_s.以下是向您展示原因的一个示例:

num = 12
num.to_s # => "12"
num # => 12
num=num.to_s
num # => "12"
Run Code Online (Sandbox Code Playgroud)

基本上String#to_s将接收器实例更改为String.But 的实例如果接收器已经是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
Run Code Online (Sandbox Code Playgroud)