回答
那麼,「無」是Lisp和Smalltalk†中「無」的具體概念的傳統名稱。單詞「null」被用作形容詞意思「空」,如在「空列表」中,這是零。
同時,「空」傳統上是C中的指針值,表示指針不指向任何有效的指針。它指的是指針爲空(就像Lisp使用這個詞一樣),但它被認爲是一種價值。
Matz是Smalltalk和Lisp的粉絲,所以他用他們的術語。這兩個術語在意義上並沒有真正的重要差別 - 一個就是C-ish。
†實際上,「無」存在於更多的語言,而不僅僅是那些。即使是C的曾祖父Algol-68也稱它爲「零」。我不知道如果C 發明「零」作爲名字的空引用或只是推廣它,但我敢肯定,所有使用該術語的現代語言得到了它從C
許多編程語言有一種方法來表示缺少信息。有時你會看到null
,有時候,nil
,在Python中我們有None
。
nil
和null
和None
之間沒有統一的區別。有趣的是,不同語言在使用方式上存在差異,例如:在某些語言中,它只能用在指針上下文中;有時它是一個關鍵字;有時它只是一個標識符;有時它是一種原始的;有時它是一個對象。
但沒有什麼說你必須使用nil
來表示這個意思,null
意思是說。
這個詞的意思並不代表語言設計者。松本優選nil
;就這些。
FWIW,有些語言更進一步,並將無所不包的概念與我無所謂的概念區分開來。 JavaScript的說到這裏想起:
var supervisor = null; // I definitely do NOT have a supervisor.
var supervisor = undefined; // I may or may not have supervisor. I may or may not
// even know if I do. Or it is not relevant. Or it is
// none of your business.
語言設計者可能會或可能不會決定在他們的語言使用這種區別。儘管如此,我從來沒有見過類似null
與nil
之類的東西。
我是一位老學校的程序員。我在30多年前專業編程。很多編程已經通過了我。但我想指出一些沒有提到的老派。
有一個名爲null的ASCII字符。它的二進制值是00000000.它是一個實際的字符。我們曾經問過「空字符是否爲空?」。
我的建議,對我來說是一個改變的想法,就是爲空字符保留單詞null,並在意義「無」時使用nil。
從歷史上看:我們使用向一些地方發送一串空值來在發送數據時創建一個暫停。
- 1. Ruby和Nil對象
- 2. 對象== nil或nil ==對象來檢查對象是否爲零?
- 3. 爲什麼在釋放對象後使用'nil'
- 4. 爲什麼Ruby中的a = a`` nil`?
- 5. 在Ruby中,爲什麼!nil return => true?
- 6. 爲什麼匿名命名空間中的函數/對象有外部鏈接?
- 7. Clojure使用什麼命名空間來定義
- 8. 爲什麼self.splitViewController == nil?
- 9. 在JavaScript中,對象和命名空間有什麼區別?
- 10. 爲什麼stdClass命名空間?
- 11. 爲什麼沒有Microsoft.Win64命名空間?
- 12. 使用libxml-ruby聲明命名空間
- 13. 爲什麼程序集命名空間會來兩次?
- 14. 爲什麼對象屬性爲空?
- 15. 導航對象爲空;爲什麼?
- 16. 爲什麼表單值對象爲空?
- 17. JSON對象顯示爲空。爲什麼?
- 18. 爲什麼在ruby中頁面對象名稱錯誤?
- 19. 爲什麼使用命名空間如果iostream被導入
- 20. 爲什麼樣式和佈局使用android命名空間?
- 21. 使用RequireJS的Javascript命名空間,爲什麼?
- 22. xml.writer - 爲什麼要使用XHTML命名空間?
- 23. 爲什麼我不得不使用完整的命名空間?
- 24. 爲什麼myInstance = nil而不是self.myInstance = nil?
- 25. 爲什麼(=(vector nil)(vec nil))返回false?
- 26. 爲什麼Nil :: Nil會返回List(List())?
- 27. 爲什麼Rails命名範圍返回空(未初始化?)對象?
- 28. refreshObject:mergeChanges:並將對象設置爲nil有什麼不同?
- 29. 爲空命令對象
- 30. 在Ruby中,爲什麼nil [1] = 1評估爲零?
無意味着沒有/不存在。詢問Matz。這並沒有什麼不同。 –
只是猜測:Ruby非常類似lisp,'nil'是lisp中的一個值。許多口語方言和帕斯卡已經出現很長時間了。相比之下,'null'可能是「更新的想法」。 – Gene