2012-03-16 20 views
16

Duplicar posible:
Ruby $stdout vs. STDOUT

Está STDERR prefieren generalmente sobre el uso de $stderr, o viceversa?

¿Y qué hay de STDOUT contra $stdout?

+4

Creo que su pregunta ha sido respondida en otra parte: http://stackoverflow.com/questions/6671716/ruby-stdout-vs-stdout –

Respuesta

19

Por el contrario, usar $stderr es preferible.

El motivo es que $stderr como variable global se puede reasignar, mientras que STDERR como constante no se debe reasignar (se genera una advertencia).

Por lo general, ambos apuntan al mismo archivo de error estándar, pero en algunos casos es posible que desee redirigir temporalmente toda su producción en otro lugar (por ejemplo, un archivo de registro o en un búfer de cadena), en cuyo caso se puede simplemente reasigne $stderr y todo su código lo respetará (si fue lo suficientemente inteligente como para usar $stderr en lugar de STDERR en primer lugar).

+0

Aunque no sé si las funciones internas usan 'STDERR' o' $ stderr '. Es posible que deba realizar todas las escrituras y lecturas de manera explícita, en cuyo punto debe usar una otra variable dedicada. – Linuxios

+0

@Linux: ¿Qué "funciones internas" escribirían en stderr? Lo único que me viene a la mente son las advertencias, que puedes erradicar arreglándolas. –

+0

Lo siento. Quise decir 'STDOUT' y' $ stdout' en relación con 'puts' y' gets'. Whoops. – Linuxios