Zastanawiam się, dlaczego ludzie, którzy napisali bibliotekę File
postanowili wprowadzić argumenty, które określają tryb otwierania pliku w ciągach zamiast symboli.Dlaczego nie są argumenty dla symboli File.new zamiast ciągów?
Na przykład, to jak to jest teraz:
f = File.new('file', 'rw')
Ale czy nie byłoby lepiej konstrukcja zrobić
f = File.new('file', :rw)
lub nawet
f = File.new(:file, :rw)
na przykład ? To wydaje się być idealnym miejscem do ich użycia, ponieważ argument zdecydowanie nie musi być zmienny.
Chcę się dowiedzieć, dlaczego tak się stało.
Aktualizacja: Właśnie skończyłem czytać a related question about symbols vs. strings, i myślę, że konsensus był taki, że symbole nie są tak dobrze znane jak ciągi znaków, a każdy jest przyzwyczajony do używania łańcuchów do indeksowania tablic hashowych. Nie sądzę jednak, aby projektanci standardowej biblioteki Rubiego byli uprawnieni do niewiedzy na temat symboli, więc nie sądzę, że to jest powód.
Jest to prawdopodobnie tylko historyczny artefakt, który powraca do "fopen" w bibliotece libc. –
Czy sugerujesz, aby zdefiniować unikalny symbol dla każdej ważnej permutacji trybów 'File.new' (' r', 'w',' + ',' a', 'b',' t')? – Gabe
Świetne pytanie. Istnieją stałe takie jak 'File :: RDWR' i' File :: CREAT', których możesz użyć, ale nie mogę znaleźć dokumentacji na jego temat. "Plik" [dokumentacja] (http://www.ruby-doc.org/core/classes/File.html) używa tych stałych, ale ich nie wyjaśnia. – rdvdijk