Recherche…


Syntaxe

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

Remarques

Il est parfois très difficile d'obtenir une nouvelle syntaxe pour bien jouer avec plusieurs versions. Comme Julia est toujours en développement actif, il est souvent utile de supprimer le support des anciennes versions et de ne cibler que les plus récentes.

Numéros de version

Julia a une implémentation VersionNumber du VersionNumber version sémantique à travers le type VersionNumber .

Pour construire un VersionNumber de VersionNumber tant que littéral, @v_str pouvez utiliser la macro de chaîne @v_str :

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

Alternativement, on peut appeler le constructeur VersionNumber ; Notez que le constructeur accepte jusqu'à cinq arguments, mais tous sauf le premier sont facultatifs.

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

Les numéros de version peuvent être comparés à l'aide d' opérateurs de comparaison et peuvent donc être triés:

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"

Les numéros de version sont utilisés à plusieurs endroits sur Julia. Par exemple, la constante VERSION est un VersionNumber :

julia> VERSION
v"0.5.0"

Ceci est couramment utilisé pour l'évaluation de code conditionnel, en fonction de la version de Julia. Par exemple, pour exécuter un code différent sur v0.4 et v0.5, on peut faire

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

Chaque package installé est également associé à un numéro de version actuel:

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

Utiliser Compat.jl

Le package Compat.jl active l'utilisation de nouvelles fonctionnalités et syntaxes Julia avec les anciennes versions de Julia. Ses fonctionnalités sont documentées dans son README, mais un résumé des applications utiles est donné ci-dessous.

0.5.0

Type de chaîne unifiée

Dans Julia v0.4, il y avait beaucoup de types de chaînes différents . Ce système était considéré comme trop complexe et déroutant, donc dans Julia v0.5, il ne reste que le type String . Compat permet d'utiliser le type String et le constructeur sur la version 0.4, sous le nom Compat.String . Par exemple, ce code v0.5

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

peut être directement traduit dans ce code, qui fonctionne à la fois sur v0.5 et v0.4:

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

Notez qu'il y a des mises en garde.

  • Sur la v0.4, Compat.String est typé avec ByteString , qui est Union{ASCIIString, UTF8String} . Ainsi, les types avec des champs String ne seront pas stables. Dans ces situations, Compat.UTF8String est conseillé car il signifiera String sur v0.5 et UTF8String sur v0.4, les deux étant des types concrets.
  • Il faut faire attention à utiliser Compat.String ou import Compat: String , car String lui-même a un sens sur v0.4: c'est un alias obsolète pour AbstractString . Un signe indiquant que String été utilisé accidentellement au lieu de Compat.String est que, à tout moment, les avertissements suivants apparaissent:
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

Syntaxe de diffusion compacte

Julia v0.5 introduit le sucre syntaxique pour la broadcast . La syntaxe

f.(x, y)

est abaissé pour broadcast(f, x, y) . Les exemples d'utilisation de cette syntaxe incluent sin.([1, 2, 3]) pour prendre le sinus de plusieurs nombres à la fois.

Sur la v0.5, la syntaxe peut être utilisée directement:

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

Cependant, si nous essayons la même chose avec la version 0.4, nous obtenons une erreur:

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

Heureusement, Compat rend également cette nouvelle syntaxe utilisable depuis la version 0.4. Encore une fois, nous ajoutons à l' using Compat . Cette fois, nous @compat l'expression avec 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow