¿Cómo funciona el comentario mágico en Ruby? Me refiero a:¿Cómo funciona el comentario mágico (# Codificación: utf-8) en Ruby?
# Encoding: utf-8
¿Es esta una directiva de preprocesamiento? ¿Hay otros usos de este tipo de construcción?
¿Cómo funciona el comentario mágico en Ruby? Me refiero a:¿Cómo funciona el comentario mágico (# Codificación: utf-8) en Ruby?
# Encoding: utf-8
¿Es esta una directiva de preprocesamiento? ¿Hay otros usos de este tipo de construcción?
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.
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.
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:
frozen_string_literal: true
: Congela todos los literales de cadena en el archivo actualwarn_indent: true
: Activa advertencias de sangría para el archivo actualMás información: Magic Instructions
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. –
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
"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 –