Zoeken…


Syntaxis

  • met behulp van Compat
  • Compat.String
  • Compat.UTF8String
  • @compat f. (x, y)

Opmerkingen

Het is soms heel moeilijk om een nieuwe syntax te krijgen om goed te spelen met meerdere versies. Omdat Julia nog steeds actieve ontwikkeling ondergaat, is het vaak handig om de ondersteuning voor oudere versies te laten vallen en zich in plaats daarvan alleen op de nieuwere te richten.

Versienummers

Julia heeft een ingebouwde implementatie van semantische versiebeheer blootgesteld via het type VersionNumber .

Om een construeren VersionNumber als een letterlijke, de @v_str reeks macro kan worden gebruikt:

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

Als alternatief kan men de VersionNumber constructor aanroepen; merk op dat de constructor maximaal vijf argumenten accepteert, maar alle behalve de eerste zijn optioneel.

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

Versienummers kunnen worden vergeleken met behulp van vergelijkingsoperatoren en kunnen dus worden gesorteerd:

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"

Versienummers worden op verschillende plaatsen in Julia gebruikt. De constante VERSION is bijvoorbeeld een VersionNumber :

julia> VERSION
v"0.5.0"

Dit wordt meestal gebruikt voor evaluatie van voorwaardelijke codes, afhankelijk van de Julia-versie. Om bijvoorbeeld verschillende code op v0.4 en v0.5 uit te voeren, kan men dat doen

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

Elk geïnstalleerd pakket wordt ook geassocieerd met een actueel versienummer:

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

Compat.jl gebruiken

Met het Compat.jl-pakket kunnen enkele nieuwe Julia-functies en syntaxis met oudere versies van Julia worden gebruikt. De functies ervan zijn gedocumenteerd in de README, maar hieronder vindt u een overzicht van nuttige toepassingen.

0.5.0

Unified String type

In Julia v0.4 waren er veel verschillende soorten strings . Dit systeem werd als te complex en verwarrend beschouwd, dus in Julia v0.5 blijft er alleen het String type over. Compat staat het gebruik van het String type en de constructor toe op versie 0.4, onder de naam Compat.String . Bijvoorbeeld deze v0.5-code

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

kan direct worden vertaald naar deze code, die werkt op zowel v0.5 als v0.4:

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

Merk op dat er enkele kanttekeningen zijn.

  • Op v0.4 wordt Compat.String getypeerd op ByteString , wat Union{ASCIIString, UTF8String} . Typen met String zijn dus niet type-stabiel. In deze situaties wordt Compat.UTF8String geadviseerd, omdat dit String op v0.5 en UTF8String op v0.4 betekent, beide concrete types.
  • Men moet voorzichtig zijn om Compat.String te gebruiken of import Compat: String , omdat String zelf een betekenis heeft op v0.4: het is een verouderde alias voor AbstractString . Een teken dat String per ongeluk is gebruikt in plaats van Compat.String is als op enig moment de volgende waarschuwingen verschijnen:
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

Syntaxis voor compacte uitzendingen

Julia v0.5 introduceert syntactische suiker voor broadcast . De syntaxis

f.(x, y)

wordt verlaagd naar broadcast(f, x, y) . Voorbeelden van het gebruik van deze syntaxis zijn sin.([1, 2, 3]) om de sinus van meerdere getallen tegelijk te nemen.

Op v0.5 kan de syntaxis direct worden gebruikt:

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

Als we echter hetzelfde proberen op v0.4, krijgen we een foutmelding:

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

Gelukkig maakt Compat deze nieuwe syntax ook bruikbaar vanaf v0.4. Nogmaals, we voegen toe using Compat . Deze keer omringen we de uitdrukking met de 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow