我想知道爲什麼編寫File
庫的人決定做出決定文件在字符串而不是符號中打開的模式的參數。爲什麼不是File.new符號的參數而不是字符串?
例如,這是它的現在:
f = File.new('file', 'rw')
但不會是一個更好的設計做
f = File.new('file', :rw)
甚至
f = File.new(:file, :rw)
例如?這似乎是使用它們的理想場所,因爲這個論證絕對不需要變化。
我很想知道它爲什麼出現這種方式。
更新:我剛剛讀完 a related question about symbols vs. strings,我認爲共識是符號不像字符串那樣廣爲人知,並且每個人都習慣使用字符串來索引散列表。然而,我認爲Ruby標準庫的設計者不會對符號這個主題表示無知,所以我不認爲這是正確的。
這可能只是一個歷史文物,一直回到libc中的fopen。 –
您是否建議爲'File.new'模式('r','w','+','a','b','t')的每個有效置換定義一個唯一的符號? – Gabe
偉大的問題。你可以使用像'File :: RDWR'和'File :: CREAT'這樣的常量,但是我找不到關於它的文檔。 'File' [documentation](http://www.ruby-doc.org/core/classes/File.html)使用這些常量,但不解釋它們。 – rdvdijk