Julia Language
क्रॉस-संस्करण संगतता
खोज…
वाक्य - विन्यास
- संगत का उपयोग करना
- Compat.String
- Compat.UTF8String
- @compat f। (x, y)
टिप्पणियों
कई संस्करणों के साथ अच्छा खेलने के लिए नया सिंटैक्स प्राप्त करना कभी-कभी बहुत मुश्किल होता है। जैसा कि जूलिया अभी भी सक्रिय विकास के दौर से गुजर रहा है, यह अक्सर पुराने संस्करणों के लिए समर्थन छोड़ने के लिए और सिर्फ नए लोगों को लक्षित करने के लिए उपयोगी होता है।
संस्करण संख्या
जूलिया में VersionNumber प्रकार के माध्यम से उजागर होने वाले अर्थ वर्जनिंग का एक अंतर्निहित कार्यान्वयन है।
एक का निर्माण करने के VersionNumber एक शाब्दिक रूप में, @v_str स्ट्रिंग मैक्रो इस्तेमाल किया जा सकता:
julia> vers = v"1.2.0"
v"1.2.0"
वैकल्पिक रूप से, एक VersionNumber कंस्ट्रक्टर को कॉल कर सकता है; ध्यान दें कि कंस्ट्रक्टर पांच तर्कों को स्वीकार करता है, लेकिन पहले को छोड़कर सभी वैकल्पिक हैं।
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"
संस्करण संख्याओं का उपयोग जूलिया में कई स्थानों पर किया जाता है। उदाहरण के लिए, VERSION स्थिरांक एक VersionNumber :
julia> VERSION
v"0.5.0"
यह आमतौर पर जूलिया संस्करण के आधार पर, सशर्त कोड मूल्यांकन के लिए उपयोग किया जाता है। उदाहरण के लिए, 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"
संगतता का उपयोग करना
संगतता . jl पैकेज जूलिया के पुराने संस्करणों के साथ कुछ नई जूलिया सुविधाओं और सिंटैक्स का उपयोग करने में सक्षम बनाता है। इसकी विशेषताएं इसके README पर प्रलेखित हैं, लेकिन उपयोगी अनुप्रयोगों का सारांश नीचे दिया गया है।
एकीकृत स्ट्रिंग प्रकार
जूलिया v0.4 में, कई अलग-अलग प्रकार के तार थे । इस प्रणाली को अत्यधिक जटिल और भ्रमित माना जाता था, इसलिए जूलिया 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"
ध्यान दें कि कुछ कैविएट हैं।
-
Compat.Stringपर,Compat.String।Compat.Stringबाइटस्ट्रिंग के लिएByteString, जोUnion{ASCIIString, UTF8String}। इस प्रकार,Stringफ़ील्ड वाले प्रकार स्थिर नहीं होंगे। इन स्थितियों में,Compat.UTF8Stringकी सलाह दी जाती है, क्योंकि इसका अर्थ होगाStringV0.5 पर, औरUTF8Stringv0.4 पर, दोनों ठोस प्रकार हैं। -
Compat.Stringका उपयोग करने के लिए सावधान रहना होगा।import Compat: Stringयाimport Compat: StringCompat.Stringकरेंimport Compat: String, क्योंकिStringस्वयं v0.4 पर एक अर्थ है: यहAbstractStringलिए एक संक्षिप्त उपनाम है। एक संकेत जोStringको गलती से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
कॉम्पैक्ट प्रसारण सिंटैक्स
जूलिया v0.5 broadcast लिए वाक्य रचना चीनी का परिचय देता 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 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