私はプログラミングに比較的慣れておらず、Ruby にはさらに慣れていないため、repl.it Ruby インタープリターを使用してコードをテストしています。ただし、ループを含む複数の関数定義を入力しようとするたびに、同じ問題に何度も遭遇しました。必然的に次のようなエラー メッセージが表示されます。
(eval):350: (eval):350: コンパイル エラー (SyntaxError)
(eval):344: 構文エラー、予期しない kDO_COND、kEND が必要です
(eval):350: 構文エラー、予期しない kEND、$end が必要です
問題の内容とこれを回避する方法を知っている人はいますか? 私のコードは codepad で問題なく動作するように見えるので、それ自体はコード エラーのようには見えません。しかし、この特定のインタープリターを使用して、申請中のプログラムのコードをテストするように言われました。
これが私のコードです(文字列を逆にするために書いた2つの異なる方法をテストしています.1つはその場で、もう1つは新しい出力リストを使用しています):
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)