サーチ…


構文

  • Compatを使用して
  • Compat.String
  • Compat.UTF8String
  • @compat f。(x、y)

備考

新しい構文を複数のバージョンでうまく活用することは、時には非常に困難です。 Juliaはまだ積極的に開発されているため、古いバージョンのサポートを廃止し、新しいバージョンのものだけを対象とすることは便利です。

バージョン番号

Juliaには、 VersionNumber型を通して公開されたセマンティックバージョニングの組み込みの実装があります。

リテラルとしてVersionNumberを作成するには、 @v_str 文字列マクロを使用できます。

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

あるいは、 VersionNumberコンストラクタを呼び出すこともできます。コンストラクタは最大5つの引数を受け付けますが、最初の引数を除くすべての引数はオプションです。

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

バージョン番号は比較演算子を使用して比較することができ、ソートすることができます。

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"

バージョン番号はJuliaのいくつかの場所で使用されます。たとえば、 VERSION定数はVersionNumberです。

julia> VERSION
v"0.5.0"

これは、Juliaのバージョンに応じて、条件付きコードの評価によく使用されます。たとえば、v0.4とv0.5で異なるコードを実行するには、

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

インストールされた各パッケージには、現在のバージョン番号も関連付けられています

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

Compat.jlの使用

Compat.jlパッケージを使用すると、古いJuliaの新しいJulia機能と構文を使用できます。その機能はREADMEに記載されていますが、以下に有用なアプリケーションの概要を示します。

0.5.0

統一された文字列型

Julia v0.4には、さまざまな種類の文字列がありました 。このシステムは非常に複雑で紛らわしいものでしたので、Julia v0.5ではString型だけが残っています。 Compat使用可能String名の下に、バージョン0.4上のタイプとコンストラクタをCompat.String 。たとえば、このv0.5コード

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

v0.5とv0.4の両方で動作するこのコードに直接変換することができます:

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

注意すべき点がいくつかあります。

  • v0.4が上、 Compat.StringにtypealiasedさByteStringあり、 Union{ASCIIString, UTF8String} 。したがって、 Stringフィールドを持つ型は型安定ではありません。このような状況では、 Compat.UTF8Stringそれが意味するよう、助言されるString V0.5に、そしてUTF8String具体的な種類があり、どちらも、v0.4が上。
  • String自体はv0.4で意味を持つため、 Compat.Stringまたはimport Compat: String Compat.String import Compat: Stringを使用することに注意する必要があります。これは、 AbstractString非推奨エイリアスです。 Compat.String代わりに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

コンパクトな放送シンタックス

Julia v0.5はbroadcast用の構文的な砂糖を紹介しています。構文

f.(x, y)

broadcast(f, x, y)引き下げられる。この構文を使用する例としては、複数の数値の正弦を同時に取るsin.([1, 2, 3])があります。

v0.5では、構文を直接使用できます。

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

しかし、v0.4でも同じことをしようとすると、エラーが出ます:

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

幸運なことに、 Compatはこの新しい構文をv0.4でも使えるようにします。もう一度、 using Compatusing Compatて追加using Compatます。今回は、式を@compatマクロで@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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow