【发布时间】:2017-04-21 17:36:21
【问题描述】:
这是 Ruby 中的 Pig Latin translate practice。
为什么我从这两个版本的代码中得到不同的结果?也就是说,为什么word = word[i..-1]在第二个代码块中没有生效?
def translate(input)
output_array = input.split(" ").each do |word|
i=0
while !['a', 'e', 'i', 'o', 'u'].include?(word[i])
i += 1
end
unless i == 0
word << word[0..i-1]
word[0..i-1] = ''
end
word << "ay"
end
return output_array.join(" ")
end
puts translate('apple')
puts translate('banana')
puts translate('trash')
puts translate('eat pie')
哪个输出:
appleay
ananabay
ashtray
eatay iepay
还有:
def translate(input)
output_array = input.split(" ").each do |word|
i=0
while !['a', 'e', 'i', 'o', 'u'].include?(word[i])
i += 1
end
unless i == 0
word << word[0..i-1]
word = word[i..-1]
end
word << "ay"
end
return output_array.join(" ")
end
puts translate('apple')
puts translate('banana')
puts translate('trash')
puts translate('eat pie')
打印出来:
appleay
bananab
trashtr
eatay piep
【问题讨论】: