Ruby prøver å være nyttig når en del av programmet ditt har en skrivefeil eller gjør noe uventet. Ruby viser en advarsel eller feilmelding, ofte med informasjon om hvor den fant problemet i koden din.
For eksempel, hvis du ved et uhell gjorde en skrivefeil når du gjorde litt enkel matte, ville Ruby fortelle deg at du har en syntaksfeil.
Syntaks er som grammatikk på engelsk. Et programmeringsspråks syntaks er strukturen, rekkefølgen og stavningen av kommandoer og uttalelser på det språket.
Hvis du gjør en forsettlig stavemåte:
2. 2. 2: 036> 3j + 3 SyntaxError: (irb): 36: syntaksfeil, uventet tIDENTIFIER, forventer slutt-av-inngang 3j + 3 ^ fra / usr / bin / irb: 11: i &N'
Du mente ikke å skrive bokstaven j etter nummer 3, og i motsetning til hva du kan skrive i skolen når du lærer algebra, er denne syntaksen ikke gyldig Ruby.
Ruby viser en feilmelding som er litt kryptisk, men hvis du ser syntaksfeil og et linjenummer eller et sted, gir det deg et sted å begynne å undersøke hva som gikk galt. I dette tilfellet viste Ruby den riktige linjen med en liten pilsymbol som pekte på det punktet det trodde var galt. Takk, Ruby!
Hva skjer når du prøver å få Ruby til å vise en googolplex? En googol er et morsomt begrep som betyr 10 hevet til den 100. effekten. En googolplex er 1 etterfulgt av googol (10 100 ) nuller. Den amerikanske matematikeren Edward Kasners 9-årige nevø, Milton Sirotta, antok angivelig, og definerte den som sifferet "en, etterfulgt av å skrive nuller til du blir sliten. "
I Interactive Ruby (IRB), lagre en googol i en variabel kalt googol:
2. 2. 2: 030> googol = 10 ** 100 => 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Prøv nå å øke 10 med en googol:
2. 2. 2: 031> 10 ** googol (irb): 31: advarsel: i en ** b, kan b være for stor => Uendelig
Det er noen grenser for Rubys matematiske ferdigheter. Her viser Ruby deg en advarsel om at kommandoen du nettopp har skrevet ikke virker fordi en del av beregningen er for stor. Det viser resultatene som Infinity, som synes om riktig.
Se om Ruby kan finne et annet problem:
2. 2. 2: 037> x + 5 NameError: udefinert lokal variabel eller metode & X '; for hoved: Objekt fra (irb): 37 fra / usr / bin / irb: 11: i &N'
I dette tilfellet prøvde du å bruke en variabel som du ikke har lagret noe i. Ruby vet ikke hva jeg skal gjøre her, fordi det ikke kan finne en variabel som heter x (ennå).Du ser ofte denne feilen hvis du lager en skrivefeil i navnet på en variabel (eller metode). Sjekk stavemåten din og prøv igjen.
En annen vanlig Ruby-feil kan ses med denne koden:
2. 2. 2: 038> x = nil => null 2. 2. 2: 039> x + 5 NoMethodError: udefinert metode & + N' for null: NilClass fra (irb): 39 fra / usr / bin / irb: 11: i &N'
Du kan tenke på null som Rubys måte å representere "ingenting på." "Feilen Ruby viser betyr at den ikke vet hvordan å gjøre tillegg med null, noe som virker rimelig. I koden din vil dette trolig bety at du forventet å motta resultater fra en annen del av programmet, men koden returnerte ingenting.
Et siste problem du noen ganger ser er hvis du prøver å gjøre noe med uforenlige data:
2. 2. 2: 040> x = "a" => "a" 2. 2. 2: 041> x + 5 TypeError: ingen implisitt konvertering av Fixnum til String fra (irb): 41: i & + N' fra (irb): 41 fra / usr / bin / irb: 11: i &N'
Bokstaven a er tilordnet variabel x. Her, men du prøvde å legge til nummer 5 til bokstaven a. Klart dette er tull. Ruby mener det også, og forteller deg at det ikke kan konvertere dataene på en måte å få det til å fungere.
Du vil sannsynligvis gå inn i syntaksfeil oftest, fordi typoer er de enkleste feilene å gjøre. Når du ser en feilmelding, er det beste handlingsforløpet å nøye sammenligne det du skrev med prosjektets kode.