Переменные
Переменная в Julia — это имя, связанное (или привязанное) к значению. Она полезна, когда нужно сохранить значение (например, полученное после некоторых математических вычислений) для последующего использования. Например:
# Assign the value 10 to the variable x julia> x = 10 10 # Doing math with x's value julia> x + 1 11 # Reassign x's value julia> x = 1 + 1 2 # You can assign values of other types, like strings of text julia> x = "Hello World!" "Hello World!"
Julia предоставляет чрезвычайно гибкую систему для именования переменных. Имена переменных чувствительны к регистру и не имеют семантического значения (то есть, язык не будет обрабатывать переменные по-разному на основе их имён).
julia> x = 1.0 1.0 julia> y = -3 -3 julia> Z = "My string" "My string" julia> customary_phrase = "Hello world!" "Hello world!" julia> UniversalDeclarationOfHumanRightsStart = "人人生而自由,在尊严和权利上一律平等。" "人人生而自由,在尊严和权利上一律平等。"
Разрешены имена с использованием Юникода (в кодировке UTF-8):
julia> δ = 0.00001 1.0e-5 julia> 안녕하세요 = "Hello" "Hello"
В Julia REPL и нескольких других средах редактирования Julia вы можете ввести множество символов математического Юникода, набрав имя символа LaTeX в обратных кавычках и нажав клавишу табу. Например, имя переменной δ можно ввести, набрав \delta-табу, или даже α̂⁽²⁾ набрав \alpha-табу-\hat- табу-\^(2)-табу. (Если вы найдёте символ где-то, например, в чужом коде, и не знаете, как его набрать, помощь REPL подскажет вам: просто введите ? и затем вставьте символ.)
Julia даже позволит вам переопределять встроенные константы и функции при необходимости (хотя это не рекомендуется для предотвращения возможных конфликтов):
julia> pi = 3 3 julia> pi 3 julia> sqrt = 4 4
Однако, если вы попытаетесь переопределить встроенную константу или функцию, которая уже используется, Julia выдаст ошибку:
julia> pi π = 3.1415926535897... julia> pi = 3 ERROR: cannot assign a value to variable MathConstants.pi from module Main julia> sqrt(100) 10.0 julia> sqrt = 4 ERROR: cannot assign a value to variable Base.sqrt from module Main
Допустимые имена переменных
Имена переменных должны начинаться с буквы (A-Z или a-z), подчёркивания или подмножества кодовых точек Юникода, больших 00A0; в частности, категории символов Юникода Lu/Ll/Lt/Lm/Lo/Nl (буквы), Sc/So (валюты и другие символы), и несколько других буквенных символов (например, подмножество математических символов Sm) разрешены. Последующие символы также могут включать ! и цифры (0-9 и другие символы в категориях Nd/No), а также другие кодовые точки Юникода: диакритики и другие модифицирующие знаки (категории Mn/Mc/Me/Sk), некоторые знаки пунктуации (категория Pc), штрихи и несколько других символов.
Операторы, такие как +, также являются допустимыми идентификаторами, но обрабатываются особым образом. В некоторых контекстах операторы могут использоваться как переменные; например (+) относится к функции сложения, и (+) = f переназначит её. Большинство инфиксных операторов Юникода (в категории Sm), таких как ⊕, обрабатываются как инфиксные операторы и доступны для пользовательских методов (например, вы можете использовать const ⊗ = kron для определения ⊗ как инфиксного произведения Кронекера). Операторы также могут быть дополнены модифицирующими знаками, штрихами и под/надстрочными индексами, например +̂ₐ″ обрабатывается как инфиксный оператор с тем же приоритетом, что и +. Необходимо пробел между оператором, заканчивающимся под/надстрочным индексом и последующим именем переменной. Например, если +ᵃ является оператором, то +ᵃx должно быть записано как +ᵃ x для различения его от + ᵃx, где ᵃx является именем переменной.
Определённый класс имён переменных содержит только подчёркивания. Эти идентификаторы могут быть только присвоены значения, но не могут быть использованы для присваивания значений другим переменным. Более технически, они могут быть использованы только как L-значение, но не как R-значение:
julia> x, ___ = size([2 2; 1 1]) (2, 2) julia> y = ___ ERROR: syntax: all-underscore identifier used as rvalue
Единственные явно запрещённые имена переменных — имена встроенных Ключевых слов:
julia> else = false ERROR: syntax: unexpected "else" julia> try = "No" ERROR: syntax: unexpected "="
Некоторые символы Юникода считаются эквивалентными в идентификаторах. Различные способы ввода символов Юникода с объединением (например, акценты) рассматриваются как эквивалентные (конкретно, идентификаторы Julia нормализуются NFC). Julia также включает несколько нестандартных эквивалентностей для символов, которые визуально похожи и легко вводятся некоторыми методами ввода. Символы Юникода ɛ (U+025B: малая открытая буква е) и µ (U+00B5: знак микро) обрабатываются как эквивалентные соответствующим греческим буквам. Средняя точка · (U+00B7) и греческая точка · (U+0387) обе обрабатываются как математический оператор точки ⋅ (U+22C5). Знак минус − (U+2212) обрабатывается как эквивалентный знаку дефиса - (U+002D).
Стилевые рекомендации
Хотя Julia накладывает немного ограничений на допустимые имена, полезно принять следующие рекомендации:
- Имена переменных пишутся строчными буквами.
- Разделение слов может быть указано с помощью подчёркиваний (
'_'), но использование подчёркиваний не рекомендуется, если имя без них читается легко. - Имена
TypeиModuleначинаются с заглавной буквы, а разделение слов отображается с использованием верхнего регистрового стиля camelCase вместо подчёркиваний. - Имена
functionиmacroпишутся строчными буквами без подчёркиваний. - Функции, которые записывают в свои аргументы, имеют имена, заканчивающиеся на
!. Иногда их называют «изменяющими» или «локальными» функциями, поскольку они предназначены для внесения изменений в их аргументы после вызова функции, а не только для возвращения значения.
Дополнительную информацию о стилистических рекомендациях см. в Руководстве по стилю.
© 2009–2021 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.7.0/manual/variables/