gpt4 book ai didi

ruby - 使用 Ruby 将一个数组插入另一个数组,并返回方括号

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:20 25 4
gpt4 key购买 nike

我花了几个小时寻找将一个数组插入另一个数组或哈希的方法。如果这个问题的格式有点困惑,请提前致歉。这是我第一次在 StackOverflow 上提问,所以我正在尝试掌握正确设计问题样式的窍门。

我必须编写一些代码才能通过以下测试单元:

class TestNAME < Test::Unit::TestCase
def test_directions()
assert_equal(Lexicon.scan("north"), [['direction', 'north']])
result = Lexicon.scan("north south east")

assert_equal(result, [['direction', 'north'],
['direction', 'south'],
['direction', 'east']])

end
end

我想出的最简单的事情如下。第一部分通过了,但是当我运行 rake test 时,第二部分没有返回预期的结果。

代替或返回:

[["direction", "north"], ["direction", "south"], ["direction", "east"]]

它正在返回:

["north", "south", "east"]

不过,如果我将 y 的结果作为字符串打印到控制台,我会得到 3 个单独的数组,它们不包含在另一个数组中(如下所示)。为什么它没有打印数组最外层的方括号 y

["direction", "north"]
["direction", "south"]
["direction", "east"]

下面是我为通过上面的测试单元而编写的代码:

class Lexicon

def initialize(stuff)
@words = stuff.split
end

def self.scan(word)
if word.include?(' ')
broken_words = word.split

broken_words.each do |word|
x = ['direction']
x.push(word)
y = []
y.push(x)
end
else
return [['direction', word]]
end

end

end

我们将不胜感激对此的任何反馈。非常感谢大家。

最佳答案

您看到的是 each 的结果,它返回被迭代的内容,或者在本例中为 broken_words。您想要的是 collect ,它返回转换后的值。请注意,在您的原始版本中,y 从未使用过,它在组合后就被丢弃了。

这是一个修复后的版本:

class Lexicon
def initialize(stuff)
@words = stuff.split
end

def self.scan(word)
broken_words = word.split(/\s+/)

broken_words.collect do |word|
[ 'direction', word ]
end
end
end

值得注意的是这里发生了一些变化:

  • 拆分任意数量的空格而不是一个。
  • 简化为一个案例而不是两个案例。
  • 消除多余的 return 语句。

您可能会考虑使用像 { direction: word } 这样的数据结构。这使得引用值变得容易得多,因为您可以通过 entry[:direction] 避免模棱两可的 entry[1]

关于ruby - 使用 Ruby 将一个数组插入另一个数组,并返回方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com