gpt4 book ai didi

ruby - "self.to_a"有效但 "self.to_a.join(' ').gsub(/\W/,"")"无效

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:50 24 4
gpt4 key购买 nike

我的代码已经通过了所有测试条件(例如,数组、字符串、散列..)除了这个:

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) 应该也工作。

最佳答案

我不太明白你想做什么,但如果你的目标是设置一个知道数组是否为“回文”的方法,我认为第一个方法将评估 true 是你传递一个数组像 %w( ani ta la va la ti na ) ,第二个将使用像 [0,2,3,2,0] 这样的数组评估 true,这意味着这些方法评估不同的东西,如果你用同一个对象测试它们,它们不会同时返回 true。第一种方法评估更复杂,并且做了一些不同的事情。但是,如果您尝试在 Enumerable 中混合该方法,为什么要使用 self.to_a

关于ruby - "self.to_a"有效但 "self.to_a.join(' ').gsub(/\W/,"")"无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com