Arrays 返回空白数组的Ruby数组交集
我对Ruby很陌生,所以请对我宽容一点。我有一个不想执行交叉点命令的小函数。如果我进入irb并输入数组,然后将交叉点命令设置为:third_array=array1&array2,third_array返回公共元素。但当我通过irb运行这个代码段时,它只返回[]。有什么建议吗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
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但它不是公开录制的……太新了:)