Me preguntaba por qué las personas que escribieron la biblioteca File
decidieron hacer los argumentos que determinan qué modo se abre el archivo en cadenas en lugar de símbolos.¿Por qué no son los argumentos para File.new símbolos en lugar de cadenas?
Por ejemplo, esta es la forma en que es ahora:
f = File.new('file', 'rw')
Pero ¿no sería un diseño mejor que hacer
f = File.new('file', :rw)
o incluso
f = File.new(:file, :rw)
por ejemplo, ? Este parece ser el lugar perfecto para usarlos ya que definitivamente el argumento no necesita ser mutable.
Estoy interesado en saber por qué salió de esta manera.
Actualización: Acabo de terminar de leer a related question about symbols vs. strings, y creo que el consenso fue que los símbolos simplemente no son tan conocidos como cadenas, y todos están acostumbrados a usar cadenas para indexar tablas hash de todos modos. Sin embargo, no creo que sea válido para los diseñadores de la biblioteca estándar de Ruby alegar ignorancia sobre el tema de los símbolos, así que no creo que esa sea la razón.
Esto es probablemente solo un artefacto histórico que se remonta a 'fopen' en libc. –
¿Está sugiriendo que se defina un símbolo único para cada permutación válida de los modos 'File.new' (' r', 'w',' + ',' a', 'b',' t')? – Gabe
Gran pregunta. Hay constantes como 'File :: RDWR' y' File :: CREAT' que puedes usar, pero no puedo encontrar documentación al respecto. El 'Archivo' [documentación] (http://www.ruby-doc.org/core/classes/File.html) usa estas constantes, pero no las explica. – rdvdijk