Ruby数组交集返回一个空白数组

时间:2017-04-24 04:21:16

标签: arrays ruby intersection

我对Ruby非常陌生,所以请放轻松我。我有这个小功能,不想执行交叉命令。如果我进入irb并输入数组,则设置交叉命令如:third_array = array1& array2,third_array返回公共元素。但是当我通过irb运行这个片段时,它只返回[]。有什么建议吗?

class String

  define_method(:antigrams) do |word2|

    array1 = []
    array2 = []
    array1.push(self.split(""))
    array2.push(word2.split(""))
    third_array = array1 & array2
      third_array
  end

end

1 个答案:

答案 0 :(得分:4)

在看了你的内容之后,我认为你的代码归结为:

class String
  def antigrams(word)
    self.chars & word.chars
  end
end

"flurry".antigrams("flagrant")
# => ["f", "l", "r"]

如果您对split('')上与chars实际上相同的单词进行[ [ 'f', 'l', ... ] ]调用,则效率要低得多。另一个错误是将整个数组推入一个数组,该数组创建了一个&形式的嵌套数组。由于两个结果数组没有任何共同之处,它们的内部数组不同,+=操作返回一个空数组。

你的意思是将一个数组连接到另一个数组,例如可以用irb完成。

每当您对发生的事情感到好奇时,可以使用p来尝试代码块,或者使用{{1}}来调试方法中的不同点。