我的代码已经通过了所有的测试条件(例如,数组、字符串、哈希..),除了这个:
ValidPalindromeTest.new(81,96).palindrome?
它应该返回 true 但没有。代码是:
class String
def palindrome?
self.gsub(/\W/,"").downcase == self.gsub(/\W/,"").downcase.reverse
end
end
module Enumerable
def palindrome?
if self.is_a?(Hash)
false
else
self.to_a.join('').gsub(/\W/,"").downcase == self.to_a.join('').gsub(/\W/,"").downcase.reverse
end
end
end
但是当我改为
module Enumerable
def palindrome?
if self.is_a?(Hash)
false
else
self.to_a == self.to_a.reverse
end
end
有用。
问题是什么是类型ValidPalindromeTest.new(81,96)
?它应该是一个ValidPalindromeTest
类型的实例,对吧?第二种方法怎么能通过auto_grader
而第一种方法不能呢?因为在我看来,只要self.to_a
有效,其余的 ( .join('').gsub(/\W/,"").downcase
) 也应该有效。