Ricerca…


Sintassi

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

Osservazioni

A volte è molto difficile ottenere una nuova sintassi per giocare bene con più versioni. Poiché Julia è ancora in fase di sviluppo attivo, è spesso utile semplicemente abbandonare il supporto per le versioni precedenti e invece indirizzare solo quelle più recenti.

Numeri di versione

Julia ha un'implementazione integrata della versione semantica esposta tramite il tipo VersionNumber .

Per costruire un oggetto VersionNumber come letterale, è possibile utilizzare la macro string @v_str :

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

In alternativa, si può chiamare il costruttore VersionNumber ; si noti che il costruttore accetta fino a cinque argomenti, ma tutti tranne il primo sono opzionali.

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

I numeri di versione possono essere confrontati utilizzando operatori di confronto e quindi possono essere ordinati:

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"

I numeri di versione sono utilizzati in diversi punti in tutta Julia. Ad esempio, il VERSION costante è un VersionNumber :

julia> VERSION
v"0.5.0"

Questo è comunemente usato per la valutazione del codice condizionale, a seconda della versione di Julia. Ad esempio, per eseguire codice diverso su v0.4 e v0.5, si può fare

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

Ogni pacchetto installato è anche associato a un numero di versione corrente:

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

Utilizzando Compat.jl

Il pacchetto Compat.jl consente di utilizzare alcune nuove funzionalità di Julia e la sintassi con le versioni precedenti di Julia. Le sue funzionalità sono documentate nel suo README, ma di seguito viene fornito un riepilogo delle applicazioni utili.

0.5.0

Tipo di stringa unificato

In Julia v0.4 c'erano molti tipi diversi di stringhe . Questo sistema è stato considerato eccessivamente complesso e confuso, quindi in Julia v0.5, rimane solo il tipo String . Compat consente di utilizzare il tipo String e il costruttore nella versione 0.4, con il nome Compat.String . Ad esempio, questo codice v0.5

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

può essere tradotto direttamente in questo codice, che funziona sia su v0.5 che su v0.4:

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

Nota che ci sono alcuni avvertimenti.

  • Sulla v0.4, Compat.String è tipograficamente su ByteString , che è Union{ASCIIString, UTF8String} . Pertanto, i tipi con campi String non saranno di tipo stabile. In queste situazioni, si consiglia Compat.UTF8String , poiché significa String su v0.5 e UTF8String su v0.4, entrambi tipi concreti.
  • Si deve fare attenzione a usare Compat.String o import Compat: String , perché String ha un significato su v0.4: è un alias deprecato per AbstractString . Un segno che String stato utilizzato per errore al posto di Compat.String è se in qualsiasi momento compaiono i seguenti avvisi:
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

Sintassi di trasmissione compatta

Julia v0.5 introduce lo zucchero sintattico per la broadcast . La sintassi

f.(x, y)

viene abbassato per broadcast(f, x, y) . Esempi di utilizzo di questa sintassi includono sin.([1, 2, 3]) per prendere il seno di più numeri contemporaneamente.

Su v0.5, la sintassi può essere utilizzata direttamente:

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

Tuttavia, se proviamo lo stesso su v0.4, otteniamo un errore:

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

Fortunatamente, Compat rende questa nuova sintassi utilizzabile anche dalla v0.4. Ancora una volta, aggiungiamo using Compat . Questa volta, circondiamo l'espressione con la macro @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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow