Buscar..


Sintaxis

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

Observaciones

A veces es muy difícil obtener una nueva sintaxis para jugar bien con varias versiones. Como Julia aún se encuentra en desarrollo activo, a menudo es útil simplemente abandonar el soporte para versiones anteriores y en su lugar, apuntar solo a las más nuevas.

Números de versión

Julia tiene una implementación integrada de versiones semánticas expuestas a través del tipo VersionNumber .

Para construir un VersionNumber como un literal, se puede usar la macro de cadena @v_str :

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

Alternativamente, uno puede llamar al constructor VersionNumber ; tenga en cuenta que el constructor acepta hasta cinco argumentos, pero todos excepto el primero son opcionales.

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

Los números de versión se pueden comparar utilizando operadores de comparación y, por lo tanto, se pueden ordenar:

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"

Los números de versión se utilizan en varios lugares a través de Julia. Por ejemplo, la constante VERSION es una VersionNumber :

julia> VERSION
v"0.5.0"

Esto se usa comúnmente para la evaluación de códigos condicionales, dependiendo de la versión de Julia. Por ejemplo, para ejecutar un código diferente en v0.4 y v0.5, se puede hacer

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

Cada paquete instalado también está asociado con un número de versión actual:

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

Usando Compat.jl

El paquete Compat.jl permite el uso de algunas funciones y sintaxis nuevas de Julia con versiones anteriores de Julia. Sus características están documentadas en su README, pero a continuación se presenta un resumen de las aplicaciones útiles.

0.5.0

Tipo de cadena unificada

En Julia v0.4, había muchos tipos diferentes de cuerdas . Este sistema se consideró demasiado complejo y confuso, por lo que en Julia v0.5, solo queda el tipo String . Compat permite usar el tipo de String y el constructor en la versión 0.4, bajo el nombre Compat.String . Por ejemplo, este código v0.5

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

se puede traducir directamente a este código, que funciona tanto en v0.5 como en v0.4:

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

Tenga en cuenta que hay algunas advertencias.

  • En v0.4, Compat.String está tipeado para ByteString , que es Union{ASCIIString, UTF8String} . Por lo tanto, los tipos con campos de String no serán de tipo estable. En estas situaciones, se recomienda Compat.UTF8String , ya que significará String en v0.5, y UTF8String en v0.4, que son tipos concretos.
  • Uno debe tener cuidado de usar Compat.String o import Compat: String , porque String sí tiene un significado en v0.4: es un alias obsoleto para AbstractString . Una señal de que String se usó accidentalmente en lugar de Compat.String es si, en algún momento, aparecen las siguientes advertencias:
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

Sintaxis de transmisión compacta

Julia v0.5 introduce el azúcar sintáctico para su broadcast . La sintaxis

f.(x, y)

se baja a la broadcast(f, x, y) . Ejemplos de uso de esta sintaxis incluyen el sin.([1, 2, 3]) para tomar el seno de múltiples números a la vez.

En v0.5, la sintaxis se puede utilizar directamente:

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

Sin embargo, si intentamos lo mismo en v0.4, obtenemos un error:

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

Afortunadamente, Compat hace que esta nueva sintaxis sea utilizable también desde v0.4. Una vez más, añadimos using Compat . Esta vez, rodeamos la expresión 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow