2012-01-16 8 views

Respuesta

52

Por alguna razón las personas se refieren a esta línea como comentario mágico. Antes de procesar su intérprete de código fuente lee esta línea y establece la codificación adecuada. Es bastante común para los idiomas interpretados, creo. Al menos Python usa el mismo enfoque.

Puede especificar la codificación en un número de maneras diferentes (algunos de ellos son reconocidos por los editores):

# encoding: UTF-8 
# coding: UTF-8 
# -*- coding: UTF-8 -*- 

Usted puede leer algunas cosas interesantes acerca de codificación de fuente en this article.

Lo único que sé que tiene una construcción similar es shebang, pero está relacionado con los proyectiles Unix en general y no es específico de Ruby.

+0

En cierto modo, esta construcción es similar a una [ "número mágico"] (http://en.wikipedia.org/wiki/Magic_number_ (programación \)). El término "comentario mágico" parece relacionado. –

+1

Es "mágico" en el camino, que los comentarios son generalmente ignorados por el intérprete. Sin embargo, la presencia/ausencia de este comentario tiene un significado, por lo tanto, es "mágico", ya que NO es ignorado por el intérprete. – NobodysNightmare

+0

"Todos los scripts de Ruby ahora tienen la codificación UTF-8 por defecto" de https://www.engineyard.com/blog/whats-new-and-awesome-in-ruby-2 –

13

Este comentario mágico le dice a Ruby la fuente de codificación del archivo actualmente analizado. Como Ruby 1.9.x asume por defecto US_ASCII, le dice al intérprete en qué codificación se encuentra su código fuente si utiliza caracteres que no sean ASCII (como diéresis o caracteres acentuados).

El comentario tiene que ser la primera línea del archivo (o debajo del shebang si se usa) para ser reconocido.

Existen otras configuraciones de codificación. Ver this question para más información.

Desde la versión 2.0, Ruby asume la codificación UTF-8 del archivo fuente de forma predeterminada. Como tal, este comentario de codificación mágica se ha convertido en un espectáculo menos común si escribes tu código fuente en UTF-8 de todos modos.

6

Como ha señalado, los comentarios mágicos son una construcción de preprocesamiento especial. Deben definirse en la parte superior del archivo (excepto si ya hay un unix shebang en la parte superior). A partir de Ruby 2.3 hay tres tipos de comentarios mágicos:

  • Comentario de codificación: Ver otras respuestas. Siempre debe ser el primer comentario mágico. Debe ser compatible con ASCII. Establece la codificación de origen, por lo que se ejecutará en problemas si la codificación real del archivo no coincide con la codificación especificada
  • frozen_string_literal: true: Congela todos los literales de cadena en el archivo actual
  • warn_indent: true: Activa advertencias de sangría para el archivo actual

Más información: Magic Instructions

Cuestiones relacionadas