ruby - 500 的未定义方法 'reverse'

标签 ruby

我刚开始学习 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>'

最佳答案

您需要将 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

关于ruby - 500 的未定义方法 'reverse',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353722/

相关文章:

ruby-on-rails - 为什么需要显式加载可安装引擎的迁移和种子?

arrays - 在 Ruby 中转换对象数组

ruby-on-rails - 带句点(或句号)的 Rails 查询字符串。

ruby-on-rails - 每次更改 Controller 后自动重新启动 Rails 服务器

ruby - 在 Rspec 中测试非静态方法?

ruby-on-rails - Ruby 调试开源库

ruby-on-rails - Ruby on rails - 辅助方法 - Ruby on rails 中的未定义方法 `log_in'

jquery - 如何编辑复选框而不丢失现有值

ruby - 如何制作同时针对 MRI 和 JRuby 的 gem?

ruby - Perl 类似于 ruby​​ 中的匿名子程序