2012-10-21 113 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'。 –