변수

변수는 값의 이름이다. 나중에 값을 재사용하려고 한다면 변수에 저장하여 활용할 수 있다:

# 변수 x에 10을 할당한다.
julia> x = 10
10

# x의 값으로 계산할 수 있다.
julia> x + 1
11

# x의 값을 재할당할 수 있다.
julia> x = 1 + 1
2

# 기존에 저장된 값과 다른 타입을 저장할 수 있다(예시: 문자열).

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 = "모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다."
"모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다."

Julia는 유니코드 기반의 변수를 허용한다:

julia> δ = 0.00001
1.0e-5

julia> 안녕하세요 = "Hello"
"Hello"

REPL 및 다른 여러 줄리아 편집 환경에서 많은 유니코드 수학 기호를 입력할 수 있다. \ - LaTeX 기호명 - tab을 입력하면 기호로 변환된다. 예를 들어 변수명 δ는 \delta-tab, α̂₂\alpha-tab-\hat-tab-\_2-tab 으로 입력할 수 있다. 특정 기호의 LaTex 기호명이 궁금하다면 REPL에서 ?(help 호출)를 입력하고 원하는 유니코드 기호를 넣어서 확인할 수 있다.

julia는 심지어 내장 상수와 함수를 필요한 경우 변수로 재정의할 수 있다(추천하지 않는 방법이다):

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), 소수(primes) 및 몇 가지 다른 문자)를 포함할 수 있다.

+와 같은 연산자도 유니코드에 포함되지만 예외적으로 파싱된다. 일부 조건에서는 연산자를 변수로 사용할 수 있다. 예를 들어(+)는 더하기 함수를 가리키고, (+) = f로 재할당을 할 수 있다. 와 같은 대부분의 유니코드 중위 연산자(Sm)는 Julia의 중위 연산자로 파싱되며 사용자 정의 메소드(예 :크로네커 곱을 정의하기 위해const ⊗ = kron를 정의)를 사용할 수도 있다. 연산자는 수정 기호, 프라임 기호, 윗첨자/아래첨자를 접두로 붙일 수 있다. 예를 들어 +̂ₐ″+와 같은 우선 순위를 가진 중위 연산자로 파싱된다.

허용되지 않는 변수 이름은 내장 Keywords뿐이다.

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

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

일부 유니코드 문자는 동등하게 간주된다. 유니코드가 달라도 문자가 같으면 동일하게 취급된다(Julia는 NFC 표준을 사용함). 예를 들어 유니코드 문자 ɛ (U + 025B : 라틴어 소문자 열린 e)와 μ(U + 00B5 : 마이크로 부호)는 이와 형태가 같은 그리스 문자와 동일하게 취급된다.

문체 규칙

Julia는 변수 명명법이 자유롭지만 다음 규칙을 준수하는 것을 추천한다:

  • 변수는 소문자를 사용한다.
  • '_'와 같은 문자는 다른 사람을 배려해 되도록 사용하지 않는다.
  • 타입과 모듈 이름은 대문자로 시작하고 단어 분리는 밑줄(_)대신 쌍봉낙타 표기법(UpperCamelCase: 모든 단어의 첫글자를 대문자로 표기)을 지향한다.
  • 함수매크로의 이름에는 밑줄을 넣지 않는다.
  • in-place 함수의 이름은 !로 끝난다.