Tôi đã tự hỏi tại sao những người viết thư viện File
quyết định tạo ra các đối số xác định chế độ nào được mở trong chuỗi thay vì ký hiệu.Tại sao không phải là đối số cho các biểu tượng File.new thay vì chuỗi?
Ví dụ, đây là cách bây giờ nó là:
f = File.new('file', 'rw')
Nhưng nó sẽ không phải là một thiết kế tốt hơn để làm
f = File.new('file', :rw)
hoặc thậm chí
f = File.new(:file, :rw)
ví dụ ? Đây có vẻ là nơi hoàn hảo để sử dụng chúng vì đối số chắc chắn không cần phải thay đổi.
Tôi muốn biết tại sao nó lại xuất hiện theo cách này.
Cập nhật: Tôi vừa đọc xong a related question about symbols vs. strings và tôi cho rằng sự đồng thuận là biểu tượng không chỉ được biết đến như chuỗi, và mọi người đều được sử dụng để sử dụng chuỗi để lập chỉ mục bảng băm. Tuy nhiên, tôi không nghĩ rằng nó sẽ hợp lệ đối với các nhà thiết kế thư viện chuẩn của Ruby để cầu xin sự thiếu hiểu biết về chủ đề ký hiệu, vì vậy tôi không nghĩ đó là lý do.
Đây có lẽ chỉ là một tạo phẩm lịch sử sẽ quay trở lại 'fopen' trong libc. –
Bạn có gợi ý rằng một biểu tượng duy nhất được định nghĩa cho mỗi hoán vị hợp lệ của các chế độ 'File.new' (' r', 'w',' + ',' a', 'b',' t')? – Gabe
Câu hỏi hay. Có các hằng số như 'Tệp :: RDWR' và' Tệp :: CREAT' mà bạn có thể sử dụng, nhưng tôi không thể tìm thấy tài liệu về nó. 'File' [documentation] (http://www.ruby-doc.org/core/classes/File.html) sử dụng các hằng số này, nhưng không giải thích chúng. – rdvdijk