変数
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 が変数の扱いをかえることは有りません)。
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 シンボル名を入力して、その後にタブを入力して、多くの Unicode 数学記号を入力できます。たとえば、変数名 δ
は\delta
-tabで入力できますし、α̂₂
は \alpha
-tab-\hat
- tab-\_2
-tabで入力することができます。(もし例えば誰かのコードなどで、どのように入力すればよいかわからないシンボルを見つけた場合には、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 より大きいもの、のいずれかで始まる必要があります。特にUnicode 文字カテゴリ Lu/Ll/Lt/Lm/Lo/Nl (文字)、Sc/So (通貨およびその他の記号)、およびいくつかの他の文字 (Sm 数学記号のサブセットなど)が利用できます。二文字目以降は ,!
および数字 (0 から 9 およびカテゴリ Nd/No の他の文字) だけでなく、他の符号位置のユニコードでは発音記号およびその他の修飾記号(カテゴリ Mn/Mc/Me/Sk)、一部の句読点コネクタ (カテゴリ Pc)、プライムおよびその他のいくつかの文字が利用可能です。
+
のような演算子も有効な識別子ですが、構文解析のされ方が特殊です。演算子は変数とおなじように扱われることもあります。たとえば、(+)
は加算関数を表しますが、(+) = f
のように代入もできます。Unicode の二項演算子 (カテゴリ Sm) のほとんどは、二項演算子として解析され、ユーザー定義のメソッドで使用できます (たとえば、const ⊗= kron
を使用して⊗
を中置記法のクロネッカー積として定義できます)。 演算子は、修飾記号、プライム、および下付・上付文字をつけることができます。(例: +̂ₐ″
は+
と同じ優先順位を持つ二項演算子として解析されます。
明示的に禁止されている変数名は、組み込みの予約語だけです:
julia> else = false
ERROR: syntax: unexpected "else"
julia> try = "No"
ERROR: syntax: unexpected "="
一部の Unicode 文字は、識別子として同等に扱われます。 文字を組み合わせた Unicode の結合文字 (アクセントなど) に対する異なる入力方法は同等のものとして扱われます (具体的には、Julia 識別子は NFC 正規化されます)。 Unicode 文字 ε
(U+025B: ラテン語の小文字オープン e) と μ
(U+00B5: ミクロ記号) は対応するギリシャ文字と同等として扱われます。前者がいくつかの入力方法を介して簡単にアクセスできるためです。
文体上の慣習
Juliaの妥当な名前にはほとんど制限がありませんが、以下のような慣習に従うと役立つでしょう:
- 変数名を小文字にする。
- 語句の区切るときに、アンダースコア(
_
)を利用してもよい。しかし、アンダースコア無しで読みづらくなるのでなければ、使わない。 型
とモジュール
の名前は大文字で始め、単語の区切りはアンダースコアの代わりにアッパーキャメルケース(単語の最初の文字を大文字にする)を使う。関数
とマクロ
の名前は、アンダースコアなしの小文字。- 引数の内容を変更する関数は名前の最後に!をつける。こういった関数は時折、「変異(mutating)」「上書き(in-place)」関数とよばれます。 これは,関数が呼び出された後、単に値を返すだけでなく、引数に対して変化を起こそうとするからです。
文体規約の詳細については、「スタイルガイド」(@ref)をご覧ください。