我正在學習Ruby,並且我已經看到方法名稱末尾的感嘆號按照慣例意味着該方法以某種方式修改了self
。爲什麼Array#delete
沒有以感嘆號結尾,如slice!
呢,因爲delete
從self
刪除了一個元素?我錯過了一些基本的東西?命名約定:爲什麼Array#delete在末尾沒有感嘆號?
10
A
回答
15
引述Matz(Ruby的總工程師):(!)
的爆炸並不意味着 「殺傷力」 也不缺這意味着非破壞性 要麼。砰的牌子的意思是「爆炸的版本更危險比它的非爆炸對手危險,小心處理」。
由於Array#delete
不具有危險少對口,也沒有必要感嘆。
4
「爆炸」方法並不意味着它會修改接收器。它表明一種方法是現有方法更危險的版本。請參閱David A. Black's description的差異,以及response to a request更改Ruby 2.0。
這是一個很常見的誤解。請注意非常高的投票錯誤答案here。
相關問題
- 1. BASIC:函數名稱末尾的感嘆號是什麼意思?
- 2. URL末尾的感嘆號標記它做了什麼?
- 3. IronRuby - .NET 4.0 - 方法名稱末尾的問號和感嘆號
- 4. 爲什麼JSP文件在文件名中有感嘆號?
- 5. 替換字符串末尾的感嘆號
- 6. Shell感嘆號命令
- 7. 感嘆號(!)的Karabiner密碼是什麼?
- 8. 感嘆號在VB.NET
- 9. 感嘆號在功能名稱後面意味着什麼?
- 10. 爲什麼我升級的Grails項目有紅色感嘆號?
- 11. 爲什麼我的項目包中有感嘆號?
- 12. 雙感嘆號?
- 13. 感嘆號
- 14. 的感嘆號
- 15. swift中的問號和感嘆號有什麼區別?
- 16. Vim什麼是替代命令中使用感嘆號
- 17. 爲什麼pip需要感嘆號才能在iPython中使用?
- 18. 爲什麼在URL中使用感嘆號?
- 19. 爲什麼感嘆號出現在文本前面
- 20. TSQL命名約定〜這個命名約定叫什麼名字?
- 21. 什麼是「&!」在Linux的shell(符號和感嘆號)意思
- 22. 感嘆號錯誤?
- 23. cmd和感嘆號
- 24. 感嘆號衝突
- 25. 爲什麼點感嘆不顯示?
- 26. 什麼在類名末尾的角度括號的符號是什麼意思?
- 27. 爲什麼XML元素沒有附加在文件的末尾
- 28. JS雙感嘆號 - 有沒有什麼好的理由使用它?
- 29. 使用感嘆號'!'在C
- 30. 感嘆號在網址中
我的猜測是因爲'#delete'只能刪除,所以不需要標記它。像'#upper_case'這樣的東西可以分配給新創建的對象,或者在確定使用時覆蓋原始對象。 – ScottJShea 2012-02-28 20:35:41
是的,但#delete沒有標誌也可以返回一個克隆減去指定的元素(這是我所期望的,因爲沒有標誌):) – 2012-02-28 20:45:12
可能重複[爲什麼在Ruby方法中使用感嘆號?](http: //stackoverflow.com/questions/612189/why-are-exclamation-marks-used-in-ruby-methods) – 2012-02-28 21:34:29