repl.it Ruby解释器:定义包含循环的多个函数时出错

时间:2013-11-02 00:59:34

标签: ruby interpreter

我对编程相对较新,甚至比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)

1 个答案:

答案 0 :(得分:1)

你的代码很好;他们的翻译很老。如果更改与times一起使用的块语法,例如

count.times {
    reverse_word = words.pop.reverse

    words.unshift(reverse_word)
}

......突然间它起作用了。