متغیرها

یک متغیر در جولیا(و کلاً در برنامه نویسی) نامی است که به یک مقدار اختصاص می‌دهیم. این کار برای این مفید است که بخواهید مقدار مشخصی(که می‌تواند نتیجه محاسباتی باشد) را در حافظه برای استفاده در آینده ذخیره کنید. به عنوان مثال:

# 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!"

جولیا یک سیستم بسیار انعطاف‌پذیر برای نامگذاری متغیرها فراهم کرده است. توجه داشته باشید که متغیرها در جولیا case-sensitive هستند به این معنی که جولیا بین حروف بزرگ و کوچک تفاوت قائل می‌شود و مثلا متغیر a با A یکی نیست. همچنین جولیا بر اساس نام متغیرها برای آن‌ها تمایزی قائل نمی‌شود. برای مثال:

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"

در محیط REPL جولیا و بسیاری از محیط‌های ویرایش، شما بسیاری از نمادهای ریاضی یونیکد را می‌توانید با نوشتن بک اسلش شده نام نمادهای LaTeX و کلید tab استفاده کنید. برای مثال، متغیر با نام δ می‌تواند به وسیله نوشتن delta\فشردن کلید tab به نمایش درآید. همینطور برای نوشتن α̂⁽²⁾ بنویسید alpha\فشردن کلید تبhat\فشردن کلید تب\^(2)فشردن کلید تب. اگر شما نمادی را پیدا کردید(مثلاً در کدهای دیگر) و نمی‌دانستید که چگونه آن را به نمایش در آورید، کافیست به جولیا REPL مراجعه کرده و بنویسید ? و سپس نماد را الحاق کنید و enter را بزنید.

جولیا حتی به شما اجازه می‌دهد تا ثابت‌ها و توابع درون-ساخت خود جولیا را نیز در صورت لزوم تغییر دهید. هرچند که این کار برای جلوگیری از سردرگمی اصلاً توصیه نمی‌شود:

julia> pi = 3
3

julia> pi
3

julia> sqrt = 4
4

مطلب بالا فقط زمانی قابل انجام است که آن ثابتی که قرار است تغییرش دهید، در حال استفاده نباشد. اگر در حال استفاده باشد، جولیا به شما خطا می‌دهد:

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 آن را دوباره مقداردهی می‌کند. بسیاری از عملگرهای infix یونیکد(در دسته Sm) مانند ، به عنوان عملگر infix(یعنی عملگری که میان دو عملوند قرار می گیرد) تعریف شده و کاربر آنها را می‌تواند مشخص کند. برای مثال const = kron عملگر را به عنوان عملگر infix ضرب کرونکر معرفی می‌کند(یعنی اگر بین دو عملوند قرار گیرد، عمل ضرب کرونکر را بر روی آن دو عملوند اعمال می‌کند). عملگرها همچنین می‌توانند به وسیله اصلاح علامت، اولویت‌ها و زیرنویس‌ها/بالا نویس‌ها جایگزین شوند. برای مثال +̂ₐ″ به عنوان یک عملگر infix با همان اولویت + عمل می‌کند. میان یک عملگر که در انتهایش یک حرف زیرنویس‌/بالانویس‌ قرار دارد و نام متغیر بعد از آن باید یک فاصله وجود داشته باشد. برای مثال اگر +ᵃ یک عملگر باشد، +ᵃx باید به صورت +ᵃ x نوشته شود تا از + ᵃx که در آن ᵃx نام یک متغیر است، متمایز باشد.

تنها نام‌های نامجاز برای متغیرها در جولیا نام‌هایی هستند که برای اسامی درون-ساخت به کار رفته اند:

julia> else = false
ERROR: syntax: unexpected "else"

julia> try = "No"
ERROR: syntax: unexpected "="

برخی از کاراکترهای Unicode بر اساس شناسه‌ها یکسان در نظر گرفته می‌شوند.با راه‌های متفاوت وارد کردن کاراکترهای ترکیبی با Unicode (مانند لحجه) نیز یکسان برخورد می‌شود.(به طور خاص شناسه‌های جولیا توسط NFC یک‌سان‌سازی شده‌اند) کاراکترهای ɛ (U+025B: حرف کوچک لاتین باز e) و µ (U+00B5: علامت میکرو) به عنوان معادل حروف یونانی متناظر با آنها در نظر گرفته می‌شوند زیرا از طریق برخی روش‌های ورودی به راحتی در دسترس هستند.

قراردادهای سبکی

در حالی که جولیا محدودیت‌های کمی در مورد نام‌گذاری‌های معتبر اعمال می‌کند، وجود قراردادهای زیر مفید واقع شده‌است:

  • نام متغیرها با حروف کوچک است.
  • تفکیک کلمه‌ها را می‌توان با زیرخط نشان داد ('_')، اما استفاده از زیرخط تنها در صورتی که بدون آن خواندن نام سخت باشد پیشنهاد می‌شود.
  • نام‌های Typeها وModuleها با حروف بزرگ شروع می‌شود و جداسازی کلمه به جای زیرخط با حروف بزرگ (camel case) نشان داده می‌شود.
  • نام‌های functionها وmacroها با حروف کوچک و بدون زیرخط هستند.
  • توابعی که در آرگومان‌های ورودی خود تغییر ایجاد می‌کنند، نام‌هایشان به ! ختم می‌شوند. این توابع را گاهی اوقات "جهش" یا "درجا" می‌نامند زیرا آنها قصد دارند بعد از فراخوانی تابع تغییراتی در آرگومان‌های خود ایجاد کنند، نه اینکه فقط یک مقدار را برگردانند.

برای کسب اطلاعات بیشتر در مورد قراردادهای سبکی، به راهنمای سبک مراجعه کنید.