Es de conocimiento común en la mayoría de los lenguajes de programación que el flujo para trabajar con archivos es open-use-close. Sin embargo, vi muchas veces en los códigos de rubí sin igual File.open llama, y por otra parte me encontré this gem of knowledge en la documentación de rubí:Ruby's File.open y la necesidad de f.close
de E/S corrientes se cierran automáticamente cuando son reclamados por el recolector de basura.
darkredandyellow IRC amigable tomar sobre el tema:
[17:12] sí, y también, el número de descriptores de archivos se limita por lo general por el sistema operativo
[17:29] Asumo que pueda fácilmente agote los descriptores de archivo disponibles antes de el recolector de basura se limpia. en este caso, es posible que desee utilizar cerrarlos usted mismo. "reclamado por el recolector de basura". significa que el GC actúa en algún momento en el futuro. y es caro muchas razones para cerrar archivos de manera explícita
- ¿Necesitamos cerrar explícitamente
- Si sí, entonces ¿por qué el autoclose GC?
- Si no, ¿por qué la opción?
Su 'conocimiento común' se ha desfasado desde que se inventaron los destructores. – meagar
@meager: ¿Cuándo se inventaron los destructores? –
Solo una nota: Si bien los descriptores de archivos son limitados, al menos en Linux, el límite es bastante alto. – Linuxios