Kuinka [hakasulke] -menetelmän määrittely Rubyssa toimii?
This question and all comments follow the
"Attribution Required."
Samanlaisia ongelmia
- Menetelmän määritteleminen moduulin sisällä rubiinissa (NoMethodError)
- methods - Kuinka Rubyn. () Operaattori toimii?
- ruby on rails - Määritä menetelmä activerecord-suhteelle
- metaprogramming - Luokkamenetelmien määritteleminen dynaamisesti Ruby-tilassa
- syntax - Menetelmän määritteleminen Ruby-yhtälöllä
- Lisää vastaavia kysymyksiä >>
Kaikki vastaukset
Rubiinimenetelmät, toisin kuin monet kielet, voivat sisältää joitain erikoismerkkejä. Yksi niistä on taulukon hakuteksti.
Jos ottaisit käyttöön oman hajautusluokan, jossa haluat noutaa kohteen hashista, haluat tehdä sen päinvastoin, voit tehdä seuraavaa:
Voit todistaa tämän kutsumalla hash seuraavasti:
Joten def [] määritteli menetelmän, jota käytetään, kun teet
my_array["key"]
Muita menetelmiä, jotka saattavat näyttää sinulle oudolta, ovat:Pelkästään selventämään a: n määritelmää
[]
menetelmä ei liity matriiseihin tai hajautuksiin. Ota seuraava (keksitty) esimerkki:Se on vain syntaktista sokeria. On tiettyjä syntaksimalleja, jotka käännetään viestilähetyksiksi. Erityisesti
on sama kuin
ja sama koskee
==
,!=
,<
,>
,<=
,>=
,<=>
,===
,&
,|
,*
,/
,-
,%
,**
,>>
,<<
,!==
,=~
ja!~
yhtä hyvin.Myös,
on sama kuin
ja sama koskee
~
.Sitten,
on sama kuin
ja sama koskee
-
.Plus,
on sama kuin
Setereille on myös erityinen syntakse:
on sama kuin
Ja viimeisenä mutta ei vähäisimpänä, indeksoinnissa on erityinen syntaksin:
on sama kuin
ja
on sama kuin
hakasulkeet ovat menetelmän nimen kaltaisia
Array#size
sinulla onArray#[]
menetelmänä ja voit jopa käyttää sitä kuten mitä tahansa muuta menetelmää:viimeinen on jotain syntaktista sokeria ja tekee täsmälleen saman kuin ensimmäinen.
Array#+
toimi samankaltaisesti:Voit jopa lisätä tällaisia numeroita:
sama toimii
/
,*
,-
ja paljon muuta.Se on käyttäjän ylikuormittaja, se ohittaa tai täydentää menetelmän käyttäytymistä määrittelemässäsi luokassa tai luokassa, jonka käyttäytymistä muokkaat. Voit tehdä sen muille operaattoreille, jotka eivät ole []. Tässä tapauksessa muokkaat []: n käyttäytymistä, kun sitä kutsutaan mihin tahansa luokan SongList-esiintymään.
Jos sinulla on kappalelista = SongList.new ja sitten teet kappalelistan ["foobar"], mukautettu def-toimintosi tulee toimintaan ja oletetaan, että "foobar" on välitettävä parametrina (avain) ja se toimii "foobar" "mitä tahansa menetelmän mukaan pitäisi tehdä avaimen.
Yrittää
Leave a Reply