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
की सलाह दी जाती है, क्योंकि इसका अर्थ होगाString
V0.5 पर, औरUTF8String
v0.4 पर, दोनों ठोस प्रकार हैं। -
Compat.String
का उपयोग करने के लिए सावधान रहना होगा।import Compat: String
याimport Compat: String
Compat.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