2012-10-21 51 views
0

我想写一个Ruby递归函数,但我不断收到此错误。我的代码是这样的“意外结束”错误

def myfun(mylist) 
    nextlist = [] 

    if mylist.size == 1 
     return (mylist[0]) 
    else 
     # populate the list "nextlist" with fewer elements as compared to mylist somehow 
    end 

    return myfun(nextlist) 
end 

以下错误消息出现在最后end声明指出:

语法错误,意想不到的$结束,预计keyword_end

在哪里问题在这里?

+1

这段代码看起来不错。你需要发布整个模块。 – Thomas

+0

看起来不错,但有一个缩进问题。尝试红宝石-w给你警告这些。 – pguardiario

回答

1

根据旧的“教一个人钓鱼”的谚语,我会回答一个更普遍的问题:“我怎么找到丢失或多余的end?”。

为此,我发现使用我的编辑器的自动缩进功能非常有帮助。在vim中,我只是打gg = G缩进整个文件,然后通过视觉扫描它,找到缩进开始的位置与我期望的不同。

0

我复制并粘贴代码时没有出现语法错误。你的粘贴函数中是否有其他代码可能缺少end

+0

对不起,但我不应该复制粘贴我的代码在这里。它违反荣誉守则。 – OneMoreError

+0

如果您提供的代码段没有直接从您的项目中复制,那么您的实际项目中的递归函数中可能缺少'end'。否则,我会检查位于递归函数之前的代码中是否缺少'end'。 –