红宝石中的神奇评论如何运作?我在说:
# Encoding: utf-8
Run Code Online (Sandbox Code Playgroud)
这是一个预处理指令吗?这种结构还有其他用途吗?
KL-*_*L-7 58
出于某种原因,人们将此行称为魔术评论.在处理源代码之前,解释器会读取此行并设置正确的编码.我相信这种解释语言很常见.至少Python使用相同的方法.
您可以通过多种不同方式指定编码(其中一些方式可由编辑者识别):
# encoding: UTF-8
# coding: UTF-8
# -*- coding: UTF-8 -*-
Run Code Online (Sandbox Code Playgroud)
您可以在本文中阅读有关源代码编码的一些有趣内容.
我唯一知道的有类似构造的是shebang,但它通常与Unix shell有关,而不是特定于Ruby的.
如你所知,魔术评论是一种特殊的预处理结构.它们必须在文件的顶部定义(除非顶部已经有unix shebang).从Ruby 2.3开始,有三种魔术评论:
frozen_string_literal: true:冻结当前文件中的所有字符串文字warn_indent: true:激活当前文件的缩进警告更多信息:魔术指令