Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Arrays 返回空白数组的Ruby数组交集_Arrays_Ruby_Intersection - Fatal编程技术网

Arrays 返回空白数组的Ruby数组交集

Arrays 返回空白数组的Ruby数组交集,arrays,ruby,intersection,Arrays,Ruby,Intersection,我对Ruby很陌生,所以请对我宽容一点。我有一个不想执行交叉点命令的小函数。如果我进入irb并输入数组,然后将交叉点命令设置为:third_array=array1&array2,third_array返回公共元素。但当我通过irb运行这个代码段时,它只返回[]。有什么建议吗 class String define_method(:antigrams) do |word2| array1 = [] array2 = [] array1.push(self.spli

我对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

在查看您的代码后,我认为您的代码可以归结为:

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

"flurry".antigrams("flagrant")
# => ["f", "l", "r"]
如果你在一个单词上调用
split(“”)
,这个单词实际上与
chars
相同,但效率要低得多。另一个错误是将整个数组推入一个数组,这会创建一个嵌套数组,其形式为
[['f','l',…]]
。由于生成的两个数组没有任何共同点,因此它们的内部数组不同,
&
操作返回一个空数组

您的意思是将一个数组连接到另一个数组,例如可以使用
+=
来完成


每当你想知道发生了什么时,可以使用
irb
来尝试代码块,或者
p
在方法中的不同点进行调试。

看看你的代码,我认为你的代码可以归结为:

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

"flurry".antigrams("flagrant")
# => ["f", "l", "r"]
如果你在一个单词上调用
split(“”)
,这个单词实际上与
chars
相同,但效率要低得多。另一个错误是将整个数组推入一个数组,这会创建一个嵌套数组,其形式为
[['f','l',…]]
。由于生成的两个数组没有任何共同点,因此它们的内部数组不同,
&
操作返回一个空数组

您的意思是将一个数组连接到另一个数组,例如可以使用
+=
来完成


每当你想知道发生了什么时,可以使用
irb
尝试代码块,或者
p
在方法中的不同点进行调试。

def
可以完成任务时,不需要在这里使用
define\u方法
define_method
保留用于您事先不知道方法名称、计算方法或以某种方式动态生成内部块的情况。G McMahon,您是否在
def
之前引入了
def_method
(即
def antigrams(word2)
)的过程中进行了任何更改?我这样问是因为,正如@tadman所提到的,在这里使用
define\u方法有点奇怪,但我可以看出,在
def
之前,讲师可能认为在哪里讨论
define\u方法是有用的。是的,Cary,就是这样。我见过“def”的用法,但我自己并没有真正用过。也许在我的第二周
define_方法
用于元编程,即编写代码的代码,因此在第一周放弃这些方法实际上是将他们抛入了深渊。我见过或写过的每一篇介绍都是从
def
开始的。当
def
可以完成这项工作时,没有必要在这里使用
define\u方法
define_method
保留用于您事先不知道方法名称、计算方法或以某种方式动态生成内部块的情况。G McMahon,您是否在
def
之前引入了
def_method
(即
def antigrams(word2)
)的过程中进行了任何更改?我这样问是因为,正如@tadman所提到的,在这里使用
define\u方法有点奇怪,但我可以看出,在
def
之前,讲师可能认为在哪里讨论
define\u方法是有用的。是的,Cary,就是这样。我见过“def”的用法,但我自己并没有真正用过。也许在我的第二周
define_方法
用于元编程,即编写代码的代码,因此在第一周放弃这些方法实际上是将他们抛入了深渊。我看过或写过的每一篇介绍都是以
def
开头的。那太棒了!谢谢大家!+1但它不是公开录制的……太新了:)太棒了!谢谢大家!+1但它不是公开录制的……太新了:)