Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby &引用;自我介绍;工作,但;self.to“u a.join(';';).gsub(/\W/,“quot”)”;不_Ruby - Fatal编程技术网

Ruby &引用;自我介绍;工作,但;self.to“u a.join(';';).gsub(/\W/,“quot”)”;不

Ruby &引用;自我介绍;工作,但;self.to“u a.join(';';).gsub(/\W/,“quot”)”;不,ruby,Ruby,我的代码已通过所有测试条件(例如,数组、字符串、哈希…),但以下条件除外: ValidPalindromeTest.new(81,96).palindrome? 它应该返回true,但不返回。代码是: class String def palindrome? self.gsub(/\W/,"").downcase == self.gsub(/\W/,"").downcase.reverse end end module Enumerable def palind

我的代码已通过所有测试条件(例如,数组、字符串、哈希…),但以下条件除外:

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
它起作用了


问题是ValidAlindrometest.new(81,96)的类型是什么?它应该是
validAlindRometest
类型的实例,对吗?第二种方法怎么能通过自动分级机,而第一种方法不能?因为在我看来,只要
self.to_a
起作用,其余(
.join(''.gsub(/\W/,'').downcase
)也应该起作用。

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

也许你可以展示一下self.to_a给你的是什么1)81是96的回文?2) 您参考的
自动平地机是什么?3) 你能发布你的单元测试吗?4) 与您的问题不太相关,但是……我不知道您的
回文
方法的效率有多高,但您正处于一个O(n^2)解决方案(来自
#=
)。有一个简单但不像Ruby的算法可用(只需在字符上循环并比较末端,例如,
chars[head\u index]==chars[tail\u index]
)。