수색…


통사론

  • Compat 사용
  • Compat.String
  • Compat.UTF8String
  • @compat f. (x, y)

비고

새로운 구문을 여러 버전에서 사용하기가 어려운 경우가 있습니다. Julia가 여전히 활발한 개발을 진행하고 있기 때문에 이전 버전에 대한 지원을 중단하고 대신 새로운 버전을 대상으로하는 것이 유용합니다.

버전 번호

Julia에는 VersionNumber 유형을 통해 공개 된 의미 적 버전 관리 가 내장되어 있습니다.

VersionNumber 를 리터럴로 구성하려면 @v_str 문자열 매크로를 사용할 수 있습니다.

julia> vers = v"1.2.0"
v"1.2.0"

또는 VersionNumber 생성자를 호출 할 수 있습니다. 생성자는 최대 5 개의 인수를 허용하지만 첫 번째 인수를 제외한 모든 인수는 선택 사항입니다.

julia> vers2 = VersionNumber(1, 1)
v"1.1.0"

버전 번호는 비교 연산자를 사용하여 비교할 수 있으므로 정렬 할 수 있습니다.

julia> vers2 < vers
true

julia> v"1" < v"0"
false

julia> sort([v"1.0.0", v"1.0.0-dev.100", v"1.0.1"])
3-element Array{VersionNumber,1}:
 v"1.0.0-dev.100"
 v"1.0.0"
 v"1.0.1"

버전 번호는 Julia의 여러 곳에서 사용됩니다. 예를 들어 VERSION 상수는 VersionNumber .

julia> VERSION
v"0.5.0"

이것은 일반적으로 Julia 버전에 따라 조건부 코드 평가에 사용됩니다. 예를 들어 v0.4와 v0.5에서 다른 코드를 실행하려면

if VERSION < v"0.5"
    println("v0.5 prerelease, v0.4 or older")
else
    println("v0.5 or newer")
end

설치된 각 패키지 는 현재 버전 번호와도 연결됩니다.

julia> Pkg.installed("StatsBase")
v"0.9.0"

Compat.jl 사용

Compat.jl 패키지를 사용하면 이전 버전의 Julia에서 새로운 Julia 기능과 구문을 사용할 수 있습니다. 그 기능은 README에 문서화되어 있지만 유용한 응용 프로그램에 대한 요약은 아래에 나와 있습니다.

0.5.0

통합 문자열 유형

Julia v0.4에는 다양한 유형의 문자열이 있었습니다. 이 시스템은 지나치게 복잡하고 혼란스러운 것으로 간주되었으므로 Julia v0.5에서는 String 유형 만 남아 있습니다. Compat 는 버전 0.4의 String 유형 및 생성자를 Compat.String 이라는 Compat.String 있습니다. 예를 들어,이 v0.5 코드

buf = IOBuffer()
println(buf, "Hello World!")
String(buf)  # "Hello World!\n"

v0.5 및 v0.4에서 모두 작동하는이 코드로 직접 변환 할 수 있습니다.

using Compat
buf = IOBuffer()
println(buf, "Hello World!")
Compat.String(buf)  # "Hello World!\n"

주의해야 할 사항이 있습니다.

  • v0.4에서 Compat.StringUnion{ASCIIString, UTF8String} ByteString에 대해 ByteString 이 지정됩니다. 따라서 String 필드가있는 유형은 유형이 안정적이지 않습니다. 이 상황에서 Compat.UTF8StringCompat.UTF8String String 과 v0.4의 UTF8String 을 의미하므로 두 가지 모두 구체적 유형임을 권고합니다.
  • String 자체는 v0.4에서 의미를 가지기 때문에 Compat.String 또는 import Compat: String 을 사용하는 데주의해야합니다. 이는 AbstractString 의 사용되지 않는 별칭입니다. Compat.String 대신 String 이 실수로 사용되었다는 표시는 언제든지 다음 경고가 나타나는 경우입니다.
WARNING: Base.String is deprecated, use AbstractString instead.
  likely near no file:0
WARNING: Base.String is deprecated, use AbstractString instead.
  likely near no file:0

소형 방송 구문

Julia v0.5는 broadcast 통사론을 소개합니다. 문법

f.(x, y)

broadcast(f, x, y) 로 낮아진다. 이 구문을 사용하는 예에는 sin.([1, 2, 3]) 되어 여러 번 번호의 사인을 한 번에 가져올 수 있습니다.

v0.5에서는 구문을 직접 사용할 수 있습니다.

julia> sin.([1.0, 2.0, 3.0])
3-element Array{Float64,1}:
 0.841471
 0.909297
 0.14112 

그러나 우리가 v0.4에서 같은 것을 시도하면 오류가 발생합니다 :

julia> sin.([1.0, 2.0, 3.0])
ERROR: TypeError: getfield: expected Symbol, got Array{Float64,1}

다행히 Compat 는이 새로운 구문을 v0.4에서도 사용할 수있게합니다. 다시 한 번 using Compat 추가합니다. 이번에는 표현식을 @compat 매크로로 둘러 쌉니다.

julia> using Compat

julia> @compat sin.([1.0, 2.0, 3.0])
3-element Array{Float64,1}:
 0.841471
 0.909297
 0.14112 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow