Ruby: волшебные комментарии "frozen_string_literal: true" против "неизменный: строка" - PullRequest
0 голосов
/ 12 ноября 2018

В ruby ​​можно заморозить все постоянные строки в файле с помощью двух разных магических комментариев в начале файла:

# frozen_string_literal: true

и

# -*- immutable: string -*-

Понятия не имею, чторазличия есть.Есть ли?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Первый синтаксис - это волшебный комментарий для версий Ruby 2.3+ для замораживания строковых литералов, в противном случае вы должны использовать метод String, например:

'hello world!'.freeze

Второй синтаксис не реализован в Ruby, однако это способ указания переменных для файлов в текстовом редакторе Emacs .

Например, следующий комментарий в Emacs объявит, что файл является файлом Ruby и требует подсветки синтаксиса Ruby, а переменной immutable присвоено значение string.

# -*- mode: ruby; immutable: string -*-

После поиска, похоже, что он ничего не делает и не используется никаким режимом подсветки синтаксиса Ruby.

Так что вам не нужен второй синтаксис.

0 голосов
/ 12 ноября 2018

В поисках чего-либо во 2-й версии, похоже, что они имели такое же намерение, но синтаксис 2-го магического комментария, похоже, не был принят в Ruby 2.1.0.

См. https://github.com/ruby/ruby/pull/487

Первая версия # frozen_string_literal: true была принята в Ruby 2.3.0

Я попробовал последнюю версию в нескольких версиях ruby, но не сработало. Я предполагаю, что его нельзя использовать или доверять для работы в любой версии >= 2.3, но, вероятно, ни одна из версий не поддерживает его. На самом деле, я не смог найти никаких ссылок на эту версию в открытом исходном коде на github, ищущем этот синтаксис

https://github.com/ruby/ruby/search?q=immutable%3A+string&unscoped_q=immutable%3A+string

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...