Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 红宝石罐';t在For循环中将数组转换为整数_Ruby_Arrays - Fatal编程技术网

Ruby 红宝石罐';t在For循环中将数组转换为整数

Ruby 红宝石罐';t在For循环中将数组转换为整数,ruby,arrays,Ruby,Arrays,我试图得到一个散列数组(称为散列),然后根据输入行中的一个单词是否在某些数组中,用布尔值填充该数组。为了更好地理解这一点,我将获取一行输入,并对其进行扫描,以查看该输入中的单词是否在我设置的一系列数组中 11: for i in words 12: if nouns.include?(words[i]) 13: hashes[i][:nouns] = true 14: end 15: 16: if adjectives.include?(words[i]) 17

我试图得到一个散列数组(称为散列),然后根据输入行中的一个单词是否在某些数组中,用布尔值填充该数组。为了更好地理解这一点,我将获取一行输入,并对其进行扫描,以查看该输入中的单词是否在我设置的一系列数组中

11: for i in words
12:    if nouns.include?(words[i])
13:        hashes[i][:nouns] = true
14:    end 
15:
16:    if adjectives.include?(words[i])
17:        hashes[i][:adjectives] = true
18:    end 
19: end
此错误出现在第12行,即“[]”中的Analyzer.rb:12:无法将数组转换为整数(TypeError)

我有种感觉,我刚刚在某个地方犯了一个愚蠢的格式错误,但我看不到它。有什么建议吗?先谢谢你

11: for word in words
12:    if nouns.include?(word)
13:        hashes[word][:nouns] = true
14:    end 
15:
16:    if adjectives.include?(word)
17:        hashes[word][:adjectives] = true
18:    end 
19: end
word
,也就是之前的
i
(我给了它一个更好的名称),实际上已经是数组的一个元素,而不是索引


word
,也就是之前的
i
(我给了它一个更好的名字),实际上已经是数组的一个元素,而不是索引。

您应该尝试使用rubys强大的可枚举编码风格来避免此类错误。For循环与ruby不同

您的代码可以编写为:

11: words.each_with_index do |word, i|
12:    
13:    hashes[i][:nouns] = true if nouns.include?(word)   
14:    hashes[i][:adjectives] = true if adjectives.include?(word)
15:
16: end

您应该尝试使用rubys强大的可枚举编码风格来避免此类错误。For循环与ruby不同

您的代码可以编写为:

11: words.each_with_index do |word, i|
12:    
13:    hashes[i][:nouns] = true if nouns.include?(word)   
14:    hashes[i][:adjectives] = true if adjectives.include?(word)
15:
16: end

最好对数组使用methdo每个索引。 但是,如果您想对数组使用,请尝试将word[i]更改为wordfor使用对象操作,但不使用索引。
Nicola Miotto为您的示例编写了代码。

最好为您的数组使用methdo每个索引。 但是,如果您想对数组使用,请尝试将word[i]更改为wordfor使用对象操作,但不使用索引。
Nicola Miotto为您的示例编写了代码。

单词的内容是什么?单词的内容是什么?@Grullborg很好,记住接受答案;)在您的答案中,您尝试通过对象词的
[]
方法访问哈希数组。这应该只在word是整数时有效,但如果它是字符串(或其他任何内容),则应该失败。为什么这样做效果很好?对我来说,这似乎是一个有缺陷的答案。@Grullborg太好了,记得接受答案;)在您的答案中,您尝试通过对象词的
[]
方法访问哈希数组。这应该只在word是整数时有效,但如果它是字符串(或其他任何内容),则应该失败。为什么这样做效果很好?对我来说,这似乎是一个有缺陷的答案。OP的代码中没有索引,只有一个名称不正确的变量i。他说这是一个名为“hash”的散列数组。所以他想通过索引访问数组?Nicola Miotto的答案非常有效,这让我感到困惑,因为数组
[]
方法需要索引或范围,而不是对象。如果word是字符串,如果哈希是一个
哈希
而不是一个
数组
,它就会工作。OP的代码中没有索引,只有一个名称不正确的变量i。他说这是一个名为“哈希”的哈希数组。所以他想通过索引访问数组?Nicola Miotto的答案非常有效,这让我感到困惑,因为数组
[]
方法需要索引或范围,而不是对象。如果单词是字符串,那么如果哈希是
哈希
而不是
数组