我试图将数组中的两个字符串返回单个单词:
list = ['hello my name is ryan', 'hole me llamo']
def splitter(inp)
inp.each.split(' ')
end
print splitter(list)
返回:
ruby splitter.rb
splitter.rb:4:in `splitter': undefined method `strsplit' for # <Enumerator: ["hello my name is ryan", "hole me llamo"]:each> (NoMethodError)
from splitter.rb:7:in `<main>'
如果我不使用.each
并使用inp(0)
或inp(1)
但只返回一个字符串,则此功能正常。
如何才能返回两个字符串?
答案 0 :(得分:2)
这是你应该做的:
def splitter(inp)
inp.flat_map(&:split)
end
splitter list
# => ["hello", "my", "name", "is", "ryan", "hole", "me", "llamo"]
在您的代码中inp.each
实际上是一个类似Array#each
的方法调用,没有块会给出Enumerator
。 String#spilt
确实存在,但没有类似Enumerator#split
的方法,这就是 NoMethod 错误爆发的原因。
如果你想要每个字符串的单词数组,那么
def splitter(inp)
inp.map(&:split)
end
splitter list
# => [["hello", "my", "name", "is", "ryan"], ["hole", "me", "llamo"]]
答案 1 :(得分:0)
如果我正确理解了这个问题,那就是:
list = ['hello my name is ryan', 'hole me llamo']
list.join(' ').split
#=> ["hello", "my", "name", "is", "ryan", "hole", "me", "llamo"]