請看this thread的討論。我無法關注如何阻止獲取是一個更好的解決方案。options.fetch。我不明白
1
A
回答
5
在first patch上Rails ticket #4558:
options.fetch(:alt, File.basename(src, '.*').capitalize)
這行執行的基本部分並利用函數,然後將結果傳遞到Hash#fetch
無論是否爲一個值的:替代在選項散列已經存在。
options.fetch(:alt) { File.basename(src, '.*').capitalize }
相同的基名/大寫Hash#fetch
需要缺省值時才執行的代碼(即,當:替代密鑰不在選項散列存在)。這意味着如果不需要,可以跳過(可能很昂貴的)默認值的計算。
有關更多詳細信息,請參閱有關Hash#fetch
的文檔。
+0
我很清楚認爲是這種情況,但我想我的測試不是很好。由於結果在兩種情況下都是一樣的,因此我感到困惑。謝謝。 – 2010-05-10 10:57:42
1
我不知道duck-punching Rails對Hash#fetch
做了什麼,但是使用普通老Ruby對象時,我使用它而不是Hash#[]
,因爲當我要求某些東西而它不可用時,我想知道它。這就是所謂的「早失敗」(或「早崩潰」中程序員修煉的List of Tips)
相關問題
- 1. 我不明白
- 2. NullPointerException - 我不明白
- 3. 我不明白struct.unpack
- 4. 我不明白該程序
- 5. 我不明白的TypedValue
- 6. 我不明白hiera.yaml和hiera
- 7. 我只是不明白
- 8. PHP錯誤我不明白
- 9. iOS佈局;我不明白
- 10. 我不明白的功能
- 11. 我不明白_chipmunk_cffi.lib cp
- 12. 我不明白password_hash()函數
- 13. SQL錯誤,我不明白
- 14. 。我不明白這一點
- 15. gawk行爲我不明白
- 16. 我完全不明白UIPickerView
- 17. 我不明白PlatformID枚舉
- 18. C++遞歸,我不明白
- 19. phpmyAdmin錯誤我不明白
- 20. 我不明白,避免DoubleRenderError
- 21. A C++,我不明白
- 22. 我不明白AJAX回調
- 23. CakePHP HABTM - 我不明白
- 24. 我不明白,錯誤E0508
- 25. rails select activerecord我不明白
- 26. 對不起,我新,我不明白這
- 27. 聲明,我不太明白(setter =(o)=> {};)
- 28. 我不明白我改變了什麼
- 29. 我收到警告,我不明白
- 30. 我繼承了有我不明白
對不起我「以避免在情況下不必要的計算:替代選項指定」不是:-) – 2010-05-10 03:49:36