【发布时间】:2014-06-30 16:59:15
【问题描述】:
我正在构建一个 Pig 拉丁语翻译器。我能够使用以下代码为单个单词创建一个方法 pig:
def pig(str)
vowels = ['a', 'e', 'i', 'o', 'u']
arr = str.split(//)
if vowels.include? arr[0]
result = str + 'ay'
else
str.slice!(0)
if ! vowels.include? arr[1]
str.slice!(0)
result = str + arr[0] + arr[1] + 'ay'
else
result = str + arr[0] + 'ay'
end
end
result
end
这样的功能:
pig('eat') # => eatay
pig('apple') # => appleay
pig('pie') # => iepay
我正在尝试编写另一个方法translate,这样我就可以输入一个由多个单词组成的字符串,并对字符串中的每个单词调用pig 方法。这是我尝试过的:
def translate(str2)
words = str2.split(' ')
words.each do |x|
pig(x)
end
end
我使用这个示例代码来测试结果:
puts translate('eat apple pie')
虽然每个单词都翻译成功,但translate方法返回:
eat
apple
ie
虽然我预计它会返回:
eatay
appleay
iepay
有没有我遗漏的步骤?
【问题讨论】:
-
您遍历单词,并在每个单词上调用 pig(),但您没有存储结果。在每次迭代中,调用 pig() 的结果都会被丢弃。尝试将项目添加到列表中。