Siideynta luqadda barnaamijka Ruby 2.7.0

Sanad ka dib horumarka la daabacay sii daayo Ruby 2.7.0, Luuqad barnaamijeed firfircoon oo ku jihaysan shay kaas oo si heersare ah ugu hufan horumarinta barnaamijka wuxuuna ku daraa sifooyinka ugu fiican ee Perl, Java, Python, Smalltalk, Eiffel, Ada, iyo Lisp. Xeerka mashruuca waxa lagu qaybiyay shatiyada BSD ("2-clause BSDL") iyo "Ruby", kaas oo tixraacaya nooca ugu dambeeyay ee shatiga GPL oo si buuxda ula jaan qaadaya GPLv3. Ruby 2.7 waa sii deynta toddobaad ee ugu weyn ka dib habka horumarinta qorshaysan kaas oo qaadanaya hal sano si loo diyaariyo hagaajinta shaqada oo soo saarta sii deynta dayactirka 2-3 bilood kasta.

Main horumar:

  • Tijaabi taageero is waafajinta qaabka (Isbarbardhigga qaabka), kaas oo kuu ogolaanaya inaad ku celceliso shay la siiyay oo aad qiimeyso haddii uu jiro qaab la mid ah.

    kiiska [0, [1, 2, 3]] ee [a, [b, *c]] pa #=> 0
    pb #=> 1
    pc #=> [2, 3] dhamaadka

    kiis {a: 0, b: 1}
    in{a:0,x:1}
    : lama heli karo
    gudaha {a: 0, b: var}
    p var #=> 1
    dhamaadka

  • Qolka xisaabinta is-dhexgalka irb (REPL, Read-Eval-Print-Loop) hadda waxay leedahay suurtagalnimada tafatirka khadadka badan, oo la hirgeliyay iyadoo la adeegsanayo maktabad ku habboon akhriska. dib u dhigid, oo ku qoran Ruby. Taageerada rdoc waa la isku daray, taasoo kuu ogolaanaysa inaad aragto macluumaadka tixraaca ee fasalada la cayimay, cutubyada iyo hababka irb. La bixiyay midabaynta khadadka koodka ee lagu muujiyay Binding#irb iyo natiijooyinka kormeerka walxaha fasalka.

    Siideynta luqadda barnaamijka Ruby 2.7.0

  • Waxaa lagu daray qashin-qaadiyaha is haysta (Compaction GC) kaas oo baabi'in kara gobolka xusuusta, xallinta waxqabadka iyo arrimaha isticmaalka xusuusta ee ay sababto jajabnaanta xusuusta ee ku dhacda codsiyada Ruby-ga badan ee dunta leh. Si aad ugu xidho walxo dul saaran soo jeediyay Habka GC.compact si loo yareeyo tirada boggaga xusuusta ee la isticmaalo oo loo wanaajiyo tuubada hawlgallada
    CoW (koobi-ku qor).

  • La fuliyay isu diyaarinta in la kala saaro doodaha ku salaysan booska liiska ("def foo(a,b,c)") iyo keywords ("def foo (furaha: val)"). Isbeddelka doodda tooska ah ee ku salaysan ereyada muhiimka ah iyo booska waa la joojiyay oo laguma taageeri doono laanta Ruby 3.0. Gaar ahaan, waxa ay meesha ka saartay iyada oo la isticmaalayo dooddii ugu dambaysay oo ah halbeegyada ereyada muhiimka ah, gudbinta doodaha ku salaysan ereyada muhiimka ah sida halbeegga xashiishka ee ugu dambeeya, iyo u qaybinta dooda u dambaysa oo u kala qaybisa xuduudaha iyo ereyga muhiimka ah.

    def foo (furaha: 42); dhamaadka; foo({fur: 42}) #loo digay
    foog(**kw); dhamaadka; foo({fur: 42}) #loo digay
    def foo (furaha: 42); dhamaadka; foo(**{furaha: 42}) # OK
    def foo(**kw); dhamaadka; foo(**{furaha: 42}) # OK

    foog (h, **kw); dhamaadka; foo(furaha: 42) # digniin
    foog(h, furaha: 42); dhamaadka; foo(furaha: 42) #looga digay
    foog (h, **kw); dhamaadka; foo({fur: 42}) # OK
    foog(h, furaha: 42); dhamaadka; foo({fur: 42}) # OK

    def foo(h={}, furaha: 42); dhamaadka; foo("key" => 43, fure: 42) # digniin
    def foo(h={}, furaha: 42); dhamaadka; foo({"key" => 43, fure: 42}) # digniin
    def foo(h={}, furaha: 42); dhamaadka; foo({"key" => 43}, furaha: 42) # OK

    def foo(opt={}); dhamaadka; foo ( furaha: 42 ) # OK

    foog (h, ** nil); dhamaadka; foo (furaha: 1) #Cilaad doodeed
    foog (h, ** nil); dhamaadka; foo(**{furaha: 1}) # Khalad doodeed
    foog (h, ** nil); dhamaadka; foo("str" ​​==> 1) # Qalad Argument
    foog (h, ** nil); dhamaadka; foo({fur: 1}) # OK
    foog (h, ** nil); dhamaadka; foo({"str"=> 1}) # OK

    h = {}; def foo(*a) dhamaadka; foo(**h) # [] h = {}; def foo(a) dhamaadka; foo(**h) # {} iyo digniin
    h = {}; def foo(*a) dhamaadka; foo(h) # [{}] h = {}; def foo(a) dhamaadka; foo(h) # {}

  • Fursad iyadoo la isticmaalayo magacyo doorsoomayaal ah oo nambaraysan iyadoo la adeegsanaayo cabbirada xannibaadda.

    [1, 2, 3].mid walba {wuxuu dhigayaa @1} # la mid ah [1, 2, 3].mid walba { |i| ayaa i dhigaya}

  • Taageerada tijaabada ee kala duwanaanta aan lahayn qiimaha bilowga ah.

    ary[..3] # la mid ah ary[0..3] rel.halka (iibka: ..100)

  • Waxaa lagu daray habka Tiro-koobka #Tally, kaas oo tirinaya inta jeer ee cunsur kasta uu dhaco.

    ["a", "b", "c", "b"].tally
    #=> {β€œa”=>1, β€œb”=>2, β€œc”=>1}

  • La oggol yahay in lagu waco hab gaar ah oo leh "naftiisa" dhabta ah

    def foo
    dhamaadka
    gaar ah :foo
    is-foo

  • Tireeye lagu daray::Hab caajis # hamuun u qaba si loo soo saaro tiro koob joogto ah oo ka tiriyaha caajiska ah (Tire: caajisnimo).

    a = % w (foo bar baz)
    e = a.caajis.map {|x| x.upcase }.maab {|x| x +"!" }. hamuun
    p e.class #=> Xisaabiyaha
    p e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]

  • Horumarinta isku-duwaha JIT ee tijaabada ah ayaa sii socday, kaas oo si weyn u wanaajin kara waxqabadka codsiyada luqadda Ruby. Isku-duwaha JIT ee lagu soo jeediyay Ruby wuxuu marka hore ku qorayaa C code disk, ka dib wuxuu u yeeraa soo-sameeyaha C dibadda si uu u soo saaro tilmaamaha mashiinka (GCC, Clang iyo Microsoft VC ++ waa la taageerayaa). Nooca cusubi waxa uu hirgeliyaa hab loogu diri karo khadka khadka haddii loo baahdo, codsiga xulashada ee hababka hagaajinta inta lagu jiro ururinta, qiimaha caadiga ah ee "-jit-min-calls" ayaa laga kordhiyey 5 ilaa 10000, iyo "-jit-max-cache" laga bilaabo 1000 ilaa 100 .
  • Waxqabadka la hagaajiyay ee CGI.escapeHTML, Monitor iyo MonitorMixin.
  • Module#magaca, run.to_s, false.to_s, iyo nil.to_s waxay xaqiijiyaan in xadhiga la soo celiyay aan waxba iska bedelin shayga la cayimay.
  • Baaxadda faylalka binary-ga ah ee uu soo saaray RubyVM :: TilmaamahaTaxanaha#ilaa_binary; habka waa la dhimay.
  • Noocyada la cusboonaysiiyay ee qaybaha la dhisay, oo ay ku jiraan
    Bundler 2.1.2, RubyGems 3.1.2,
    Rac 1.4.15,
    CSV 3.1.2, REXML 3.2.3,
    RSS 0.2.8,
    Xargaha Scanner 1.0.3;

  • Maktabadihii waxa laga raray baakidhkii saldhigga oo loo guuray baakadaha gem dibadda ah
    CMath (gem-gacmeedka),
    Scanf (dharka iskaashatada),
    Shell (jaxarad qolof ah)
    Synchronizer (gem sync),
    ThreadsWait (dhagax wait),
    E2MM (e2map gem).

  • Qaybaha stdlib ee caadiga ah waxaa lagu daabacay rubygems.org:
    bartilmaameed,
    cgi,
    ergo
    ka bax,
    net-pop,
    net-smtp
    furan3,
    dukaan,
    kaligiis. modules Monitor looma guurin rubygems.org
    goobjooge
    waqti go'an
    raadiye
    uri,
    yaml, kaas oo lagu bixiyo kaliya ruby-core.

  • Dhismaha Ruby hadda waxa uu u baahan yahay isku xidhe C oo taageera heerka C99.

Source: opennet.ru

Add a comment