我刚刚学习红宝石,这似乎是我在这里做的一个容易的错误吗?
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)
您需要将行更改str.to_s为str=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)
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |