Tso tawm Crystal programming lus 1.5

Qhov kev tso tawm ntawm Crystal 1.5 programming lus tau raug luam tawm, cov neeg tsim khoom tau sim ua ke kom yooj yim ntawm kev txhim kho hauv cov lus Ruby nrog rau kev ua haujlwm siab ntawm cov lus C. Crystal's syntax yog ze rau, tab sis tsis sib haum nrog Ruby, txawm hais tias qee qhov Ruby cov kev pab cuam khiav tsis tau hloov kho. Cov code compiler tau sau rau hauv Crystal thiab muab faib raws li Apache 2.0 daim ntawv tso cai.

Cov lus siv hom kev tshuaj xyuas zoo li qub, siv yam tsis tas yuav tsum tau qhia meej meej txog hom kev sib txawv thiab cov qauv kev sib cav hauv cov cai. Crystal cov kev pab cuam tau muab tso ua ke rau hauv cov ntaub ntawv ua tau zoo, nrog rau kev ntsuas macros thiab cov lej tsim tawm ntawm lub sijhawm sib sau. Hauv Crystal cov kev pab cuam, nws muaj peev xwm txuas cov ntawv khi uas sau hauv C. Parallelization ntawm txoj cai ua tiav yog ua tiav siv lo lus "spawn" lo lus tseem ceeb, uas tso cai rau koj los ua haujlwm tom qab asynchronously, tsis thaiv cov xov tseem ceeb, nyob rau hauv daim ntawv ntawm cov xov sib sib zog nqus hu ua fibers.

Lub tsev qiv ntawv tus qauv muab ntau cov haujlwm sib xws, suav nrog cov cuab yeej rau kev ua CSV, YAML, thiab JSON, cov khoom siv rau kev tsim HTTP servers, thiab WebSocket kev txhawb nqa. Thaum lub sij hawm txoj kev loj hlob, nws yog ib qho yooj yim mus siv cov "crystal play" hais kom ua, uas generates ib tug web interface (localhost: 8080 los ntawm lub neej ntawd) rau kev sib tham sib tua ntawm cov cai nyob rau hauv lub Crystal lus.

Cov kev hloov loj:

  • Lub compiler tau ntxiv ib daim tshev rau cov ntawv xov xwm ntawm kev sib cav npe hauv kev ua raws li kev paub daws teeb meem thiab hauv nws lub ntsiab lus. Yog tias muaj lub npe tsis sib haum, ceeb toom tam sim no tau tshaj tawm: chav kawm paub daws teeb meem FooAbstract abstract def foo(number : Int32): Nil kawg chav Foo < FooAbstract def foo(npe : Int32): Nil p lub npe kawg 6 | def foo(npe : Int32): Nil ^β€” Ceeb toom: positional parameter 'name' sib raug rau parameter 'number' ntawm txoj kev overridden FooAbstract#foo(tus xov tooj: Int32), uas muaj lub npe txawv thiab tej zaum yuav cuam tshuam rau lub npe sib cav dhau.
  • Thaum muab ib qho kev sib cav rau ib qho kev tsis sib xws rau tus nqi ntawm qhov sib txawv, qhov kev sib cav tam sim no txwv rau hom ntawm qhov sib txawv ntawd. class Foo @x : Int64 def initialize(x) @x = x # parameter x yuav ntaus @x kawg
  • Tso cai rau koj ntxiv annotations rau cov kev txwv ntawm txoj kev lossis macros. def foo(@[MaybeUnused] x); kawg # OK
  • Ntxiv kev txhawb nqa rau kev siv tas li ua qhov ntsuas thiab cov npe hauv tuples. KEY = "s" foo = {s: "String", n: 0} puts foo[KEY].size
  • Cov ntaub ntawv tshiab #delete? txoj hauv kev tau ntxiv rau Cov Ntaub Ntawv API rau kev rho tawm cov ntaub ntawv thiab cov npe. thiab Dir#delete?, uas rov qab tsis tseeb yog tias cov ntaub ntawv lossis cov npe ploj lawm.
  • Kev tiv thaiv ntawm File.tempfile txoj kev tau ntxiv dag zog, uas tam sim no tsis tso cai rau cov cim tsis zoo hauv cov kab uas tsim cov npe ntawm cov ntaub ntawv.
  • Ntxiv ib puag ncig hloov pauv NO_COLOR, uas cuam tshuam cov xim tseem ceeb hauv compiler thiab tus neeg txhais lus tso zis.
  • Kev ua haujlwm hauv hom neeg txhais lus tau raug txhim kho zoo.

Tau qhov twg los: opennet.ru

Ntxiv ib saib