2010-06-11 51 views
4

所以我開始着眼於ruby,許多事情看起來不錯,但我很隱晦的返回語句。我明白,默認情況下,所有內容都會返回self或nil,但不是語句的最後一個值。 (特別是)如果你正在使用一個不打算返回某些東西的方法(特別是改變狀態/破壞性方法的函數!),其他人可能最終依靠返回這對方法的目的並不重要,並且具有很好的改變的機會。Ruby中的隱式返回值如何?

隱性回報的含義是什麼?有沒有辦法讓事情變得更簡單?

爲防止隱性回報而始終有回報是否被認爲是良好做法?

我很擔心這件事嗎?

P.S.當人們想要從方法中返回某個特定的東西時,他們經常使用隱式返回,這難道不會讓組中的其他人更容易打破其他代碼嗎?當然,記錄一切並給出你可能會說的有意義的名字,但人們並不總是在現實生活中這樣做。

+1

試一下......很多事情在第一眼看來都是錯誤的,直到你給它一個機會。這是一個成語,如果你覺得不對,你可以明確你的回報。 – Gishu 2010-06-11 08:05:01

+1

感謝您提出這個問題。我記得這是我在ruby gotchas列表中沒有提到的東西。 http://stackoverflow.com/questions/372652/what-are-the-ruby-gotchas-a-newbie-should-be-warned-about – 2010-06-11 14:14:13

回答

4

確保不要將puts語句添加到方法或塊的末尾,除非您想返回nil。

3

你太擔心了。 在我的〜5年的紅寶石實踐中,我沒有遇到過一些情況,因爲我錯誤地回覆了一些值。

它使方法看起來真正自我解釋和提高可讀性。我認爲這很自然。

+3

但不明確返回(或在其他語言中缺少它)有助於提高其他語言的可讀性(您可以一目瞭然地告訴您返回的內容,以及如果您沒有返回任何重要內容)? – 2010-06-11 08:03:39

+0

你仍然可以做一個明確的回報。而且,像YARD這樣的工具允許關於返回值的聲明(因此是否可以依賴它)。 – 2010-06-11 09:07:51

+0

我明白,你仍然可以做到這一點,如果你沒有看到return語句,那麼你就知道函數/方法不會返回任何內容,null或self。 又是什麼院子? – 2010-06-11 10:15:17

0

好問題。

這大概是應與TLC對待那些紅寶石的特點之一..誒,TATFT。我的意思是,強大的測試:)

此外,它是一個很好的激勵你爲你的方法提供RDocs那將明確說明這些方法返回的方式。