我正在學習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. IronRuby - .NET 4.0 - 方法名稱末尾的問號和感嘆號
- 3. Shell感嘆號命令
- 4. 感嘆號在VB.NET
- 5. 龜SVN沒有顯示!感嘆號
- 6. 感嘆號在功能名稱後面意味着什麼?
- 7. 雙感嘆號?
- 8. 的感嘆號
- 9. swift中的問號和感嘆號有什麼區別?
- 10. 爲什麼在URL中使用感嘆號?
- 11. TSQL命名約定〜這個命名約定叫什麼名字?
- 12. cmd和感嘆號
- 13. 什麼是「&!」在Linux的shell(符號和感嘆號)意思
- 14. 感嘆號在網址中
- 15. JS雙感嘆號 - 有沒有什麼好的理由使用它?
- 16. 感嘆號(!)在scala中爲arg
- 17. facebook中缺少感嘆號API名稱
- 18. 項目名稱上的感嘆號
- 19. YAML中的單個感嘆號有什麼作用?
- 20. 爲什麼在集合初始值設定項的末尾有一個逗號?
- 21. as3 ARRAY SHIFT - 數組的末尾現在是什麼?
- 22. 感嘆號在PHP中意味着什麼?
- 23. 在這個qbasic編程中使用感嘆號(!)是什麼?
- 24. 文件名末尾的問號是什麼意思?
- 25. 批量操作:在裏面設置帶感嘆號的變量感嘆號
- 26. Java基礎感嘆號
- 27. facebook上的感嘆號
- 28. 使感嘆號更可見
- 29. pynput合併感嘆號
- 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