Suche…


Syntax

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

Bemerkungen

Es ist manchmal sehr schwierig, eine neue Syntax für mehrere Versionen zu erhalten. Da sich Julia noch in der aktiven Entwicklung befindet, ist es oft nützlich, die Unterstützung für ältere Versionen einfach einzustellen und stattdessen nur die neueren zu verwenden.

Versionsnummern

Julia verfügt über eine integrierte Implementierung der semantischen Versionierung, die durch den VersionNumber Typ VersionNumber .

Um eine VersionNumber als Literal zu @v_str , kann das @v_str String-Makro verwendet werden:

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

Alternativ kann man den VersionNumber Konstruktor aufrufen. Beachten Sie, dass der Konstruktor bis zu fünf Argumente akzeptiert, alle außer dem ersten sind jedoch optional.

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

Versionsnummern können mit Vergleichsoperatoren verglichen und somit sortiert werden:

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"

Versionsnummern werden an verschiedenen Stellen in Julia verwendet. Beispielsweise ist die VERSION Konstante eine VersionNumber :

julia> VERSION
v"0.5.0"

Dies wird normalerweise für die bedingte Codeauswertung verwendet, abhängig von der Julia-Version. Um zum Beispiel anderen Code auf v0.4 und v0.5 auszuführen, kann man dies tun

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

Jedes installierte Paket ist auch mit einer aktuellen Versionsnummer verknüpft:

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

Compat.jl verwenden

Das Compat.jl-Paket ermöglicht die Verwendung einiger neuer Julia-Funktionen und -Syntax mit älteren Versionen von Julia. Seine Funktionen sind in der README-Dokumentation dokumentiert. Nachfolgend finden Sie eine Zusammenfassung nützlicher Anwendungen.

0,5,0

Einheitlicher String-Typ

In Julia v0.4 gab es viele verschiedene Arten von Saiten . Dieses System wurde als zu komplex und verwirrend angesehen, sodass in Julia v0.5 nur noch der String Typ erhalten bleibt. Compat erlaubt die Verwendung des String Typs und Compat.String in Version 0.4 unter dem Namen Compat.String . Zum Beispiel dieser Code der Version 0.5

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

kann direkt in diesen Code übersetzt werden, der für v0.5 und v0.4 funktioniert:

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

Beachten Sie, dass es einige Einschränkungen gibt.

  • Auf v0.4, Compat.String ist typealiased ByteString , was Union{ASCIIString, UTF8String} . Daher sind Typen mit String Feldern nicht typstabil. In diesen Situationen wird Compat.UTF8String empfohlen, da dies String in Version 0.5 und UTF8String in Version UTF8String bedeutet. Beide Typen sind konkrete Typen.
  • Man muss vorsichtig sein, Compat.String zu verwenden oder import Compat: String , da String selbst in Version 0.4 eine Bedeutung hat: Es ist ein veralteter Alias ​​für AbstractString . Ein Zeichen, dass String versehentlich anstelle von Compat.String ist, wenn zu irgendeinem Zeitpunkt die folgenden Warnungen Compat.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

Kompakte Broadcasting-Syntax

Julia v0.5 führt syntaktischen Zucker für die broadcast . Die Syntax

f.(x, y)

wird auf broadcast(f, x, y) abgesenkt. Beispiele für die Verwendung dieser Syntax sind sin.([1, 2, 3]) , um den Sinus mehrerer Zahlen gleichzeitig zu erfassen.

In Version 0.5 kann die Syntax direkt verwendet werden:

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

Wenn wir dasselbe auf Version 0.4 versuchen, wird jedoch ein Fehler angezeigt:

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

Glücklicherweise macht Compat diese neue Syntax ab Version 0.4 auch nutzbar. Wieder fügen wir using Compat . Diesmal umgeben wir den Ausdruck mit dem @compat Makro:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow