我对编程相对较新,甚至比Ruby更新,而且我一直在使用repl.it Ruby解释器来测试代码。但是,每当我尝试输入包含循环的多个函数定义时,我现在多次遇到同样的问题 - 我不可避免地得到一条如下所示的错误消息:
(eval):350:(eval):350:编译错误(SyntaxError)
(eval):344:语法错误,意外的kDO_COND,期待kEND
(eval):350:语法错误,意外的kEND,期待$ end
有谁知道问题是什么以及如何避免这个问题?它本身看起来不像代码错误,因为我的代码似乎在使用键盘时运行良好。但是我被告知要使用这个特定的口译员来测试我申请的程序的代码。
这是我的代码(我正在测试两种不同的方法,我用它来反转一个字符串,一个就位,另一个使用新的输出列表):
def reverse(s)
#start by breaking the string into words
words = s.split
#initialize an output list
reversed = []
# make a loop that executes until there are no more words to reverse
until words.empty?
reversed << words.pop.reverse
end
# return a string of the reversed words joined by spaces
return reversed = reversed.join(' ')
end
def reverse_string(s)
# create an array of words and get the length of that array
words = s.split
count = words.count #note - must be .length for codepad's older Ruby version
#For each word, pop it from the end and insert the reversed version at the beginning
count.times do
reverse_word = words.pop.reverse
words.unshift(reverse_word)
end
#flip the resulting word list and convert it to a string
return words.reverse.join(' ')
end
a = "This is an example string"
puts reverse(a)
puts reverse_string(a)
答案 0 :(得分:1)
你的代码很好;他们的翻译很老。如果更改与times
一起使用的块语法,例如
count.times {
reverse_word = words.pop.reverse
words.unshift(reverse_word)
}
......突然间它起作用了。