Ngemva konyaka wentuthuko
main
- okokuhlola
ukwesekwa ukufanisa iphethini (Ukufanisa iphethini ) ukuphindaphinda into enikeziwe futhi unikeze inani uma kukhona ukufana kwephethini.icala [0, [1, 2, 3]] ku- [a, [b, *c]] pa #=> 0
pb #=> 1
pc #=> [2, 3] isiphethoicala {a: 0, b: 1}
ngo{a:0,x:1}
:akutholakali
kokuthi {a: 0, b: var}
p var #=> 1
ekupheleni - Igobolondo lezibalo ezisebenzisanayo i-irb (REPL, Read-Eval-Print-Loop) manje selinethuba lokuhlela imigqa eminingi, esetshenziswa kusetshenziswa umtapo wolwazi ohambisana ne-readline.
umugqa ebhalwe ngoRuby. Ukusekelwa kwe-rdoc kuhlanganisiwe, okuvumela ukubuka ulwazi lwereferensi kumakilasi acacisiwe, amamojula nezindlela ku-irb. Ukugqanyiswa okunemibala kwemigqa enekhodi ekhonjiswa nge-Binding#irb futhi kunikezwa imiphumela yokuhlola izinto zekilasi eliyisisekelo. - Kwengezwe umqoqi kadoti ohlangene (I-Compaction GC) engakwazi ukwenza ukuhlukaniswa kwesifunda senkumbulo, ixazulule izinkinga zokusebenza kancane kanye nokwanda kokusetshenziswa kwememori ngenxa yokuhlukana kwenkumbulo okwenzeka phakathi nokusebenza kwezinye izinhlelo zokusebenza ze-Ruby ezinezintambo eziningi. Ukupakisha izinto enqwabeni
ehlongozwayo Indlela ye-GC.compact yokunciphisa inani lamakhasi ememori asetshenzisiwe futhi wandise inqwaba ukuze isebenze
I-CoW (kopisha-ubhale). -
Kwenziwe ulungiselela ukuhlukanisa izimpikiswano ngokusekelwe endaweni ohlwini ("def foo(a,b,c)") namagama angukhiye ("def foo(key: val)"). Ukuguqulwa kokungqubuzana okuzenzakalelayo okusekelwe kumagama angukhiye nendawo kuhoxisiwe futhi ngeke kusekelwe egatsheni le-Ruby 3.0. Ikakhulukazi, kuhoxisiwe ukusebenzisa i-agumenti yokugcina njengamapharamitha wegama elingukhiye, ukudlulisa izimpikiswano ezisekelwe egameni elingukhiye njengepharamitha yokugcina ye-hashi, nokuhlukanisa impikiswano yokugcina ibe imingcele yesimo kanye negama elingukhiye.def foo(ukhiye: 42); ukuphela; foo({ukhiye: 42}) #warned
def foo(**kw); ukuphela; foo({ukhiye: 42}) #warned
def foo(ukhiye: 42); ukuphela; foo(**{key: 42}) # KULUNGILE
def foo(**kw); ukuphela; foo(**{key: 42}) # KULUNGILEdef foo(h, **kw); ukuphela; foo(ukhiye: 42) #warned
def foo(h, ukhiye: 42); ukuphela; foo(ukhiye: 42) #warned
def foo(h, **kw); ukuphela; foo({ukhiye: 42}) # KULUNGILE
def foo(h, ukhiye: 42); ukuphela; foo({ukhiye: 42}) # KULUNGILEdef foo(h={}, ukhiye: 42); ukuphela; foo("ukhiye" => 43, ukhiye: 42) #warned
def foo(h={}, ukhiye: 42); ukuphela; foo({"ukhiye" => 43, ukhiye: 42}) # uxwayiswe
def foo(h={}, ukhiye: 42); ukuphela; foo({"ukhiye" => 43}, ukhiye: 42) # Kulungiledef foo(opt={}); ukuphela; foo( ukhiye: 42 ) # KULUNGILE
def foo(h, **nil); ukuphela; foo(ukhiye: 1) # Iphutha Lempikiswano
def foo(h, **nil); ukuphela; foo(**{key: 1}) # Iphutha Lempikiswano
def foo(h, **nil); ukuphela; foo("str" => 1) # Iphutha Lempikiswano
def foo(h, **nil); ukuphela; foo({ukhiye: 1}) # KULUNGILE
def foo(h, **nil); ukuphela; foo({"str" => 1}) # KULUNGILEh = {}; def foo(*a) ukuphela; foo(**h) # [] h = {}; def foo(a) ukuphela; foo(**h) # {} nesixwayiso
h = {}; def foo(*a) ukuphela; foo(h) # [{}] h = {}; def foo(a) ukuphela; foo(h) # {} -
Ithuba usebenzisa amagama aguquguqukayo anezinombolo amapharamitha webhulokhi.[1, 2, 3].ngayinye { ibeka @1 } # njengo-[1, 2, 3].ngakunye { |i| ibeka i}
- Usekelo lokuhlola lobubanzi obungenalo inani lokuqala.
ary[..3] # efanayo ne-ary[0..3] rel.where(sales: ..100)
- Kwengezwe indlela yokubala #izibalo, ebala ukuthi i-elementi ngayinye yenzeka izikhathi ezingaki.
["a", "b", "c", "b"].izibalo
#=> {"a"=>1, "b"=>2, "c"=>1} - Ucingo lwendlela eyimfihlo luvunyelwe ngokuthi "uqobo lwakho" lwangempela
deffoo
ekupheleni
imfihlo :foo
self.foo - Kwengezwe Umbhali ::Indlela Evilaphayo#emagange ukwenza ukubala okujwayelekile kusuka ekubaleni okuvilaphayo (Okubala::Ivila).
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.imephu {|x| x + "!" }.ngokulangazela
p e.class #=> Umbhali
e.map {|x| x + "?" } #=> [“FOO!?”, “BAR!?”, “BAZ!?”] - Ukuthuthukiswa komhlanganisi we-JIT wokuhlola kuqhubekile, okungathuthukisa kakhulu ukusebenza kwezinhlelo zokusebenza ngolimi lwesiRuby. I-JIT compiler ehlongozwayo ku-Ruby ibhala kuqala ikhodi ye-C kudiski, ngemva kwalokho ibiza umhlanganisi wangaphandle we-C ukuze akhiqize imiyalelo yomshini (i-GCC, i-Clang ne-Microsoft VC ++ iyasekelwa). Inguqulo entsha isebenzisa indlela yokuthunyelwa okusemgqeni uma kunesidingo, ukusetshenziswa okukhethiwe kwamamodi okuthuthukisa ngesikhathi sokuhlanganiswa, inani elizenzakalelayo le-"-jit-min-calls" liyakhuphuka lisuka ku-5 liye ku-10000, kanye "--jit-max-cache" kusuka ku-1000 kuya ku-100.
- Ukusebenza okuthuthukisiwe kwe-CGI.escapeHTML, Monitor and MonitorMixin.
- I-module#name, true.to_s, false.to_s, kanye ne-nil.to_s iqinisekisa ukuthi uchungechunge luyabuyiselwa olungashintshiwe entweni eshiwo.
- Usayizi wamafayela kanambambili akhiqizwe indlela ye-RubyVM::InstructionSequence#kuya_kanambambili yehlisiwe;
- Izinguqulo ezibuyekeziwe zezingxenye ezakhelwe ngaphakathi, okuhlanganisa
I-Bundler 2.1.2, RubyGems 3.1.2,
Umjaho 1.4.15,
I-CSV 3.1.2, REXML 3.2.3,
I-RSS 0.2.8,
Iskena sezintambo 1.0.3; - Amalabhulali asuke ekusabalaliseni okuyisisekelo aya kumaphakheji ayigugu angaphandle
I-CMath (cmth gem),
I-Scanf (scanf gem),
Igobolondo (igobolondo eliyigugu),
I-synchronizer (igugu lokuvumelanisa),
I-ThreadsWait (igugu le-thwait),
I-E2MM (igugu le-e2mmap). - Amamojula we-stdlib azenzakalelayo ashicilelwa ku-rubygems.org:
uphawu lokulinganisa,
cgi,
isithunywa,
getoptlong,
i-net pop,
net smtp,
vula3,
isitolo,
i-singleton. Amamojula okuqapha awahanjiswanga ku-rubygems.org
isibukeli,
isikhathi siphelile,
umkhondo,
u-uri,
yaml, ezithunyelwa kuphela nge-ruby-core. - Ukwakha iRuby manje kudinga i-C compiler esekela izinga le-C99.
Source: opennet.ru