Video: SHRUG: Automating your infrastructure with (tools written in) Ruby by Lowe Schmidt 2024
Ruby försöker vara till hjälp när någon del av ditt program har ett typsnitt eller gör något oväntat. Ruby visar ett varningsmeddelande eller ett felmeddelande, ofta med information om var den hittade problemet i din kod.
Till exempel, om du av misstag gjorde ett typsnitt när du gjorde lite enkel matte, skulle Ruby säga att du har ett syntaxfel.
Syntax är som grammatik på engelska. Ett programmeringsspråks syntax är strukturen, ordningen och stavningen av kommandon och uttalanden på det språket.
Om du gör ett avsiktligt stavfel:
2. 2. 2: 036> 3j + 3 SyntaxError: (irb): 36: Syntaxfel, oväntad TIDENTIFIER, förväntar slut-av-ingång 3j + 3 ^ från / usr / bin / irb: 11: i &N';
Du menade inte att skriva bokstaven j efter nummer 3 och till skillnad från vad du kan skriva i skolan när du lär dig algebra, är denna syntax inte giltig Ruby.
Ruby visar ett felmeddelande som är lite kryptiskt, men om du ser syntaxfel och ett radnummer eller en plats, ger det dig en plats att börja undersöka vad som gick fel. I detta fall visade Ruby den felaktiga raden med en liten pilsymbol som pekade på den punkt som det trodde var fel. Tack Ruby!
Vad händer när du försöker få Ruby att visa en googolplex? En googol är en rolig term som betyder 10 upp till 100: e kraften. A googolplex är 1 följt av googol (10 100 ) nollor. Den amerikanska matematikern Edward Kasners 9-årige brorson Milton Sirotta antog antagligen termen och definierade den som siffran "en, följt av att skriva nollor tills du blir trött. "
I Interactive Ruby (IRB), lagra en googol i en variabel som heter googol:
2. 2. 2: 030> googol = 10 ** 100 => 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Försök nu höja 10 med en googol:
2. 2. 2: 031> 10 ** googol (irb): 31: varning: i en ** b kan b vara för stor => Infinity
Det finns några gränser för Rubys matematiska färdigheter. Här visar Ruby dig en varning om att det kommando du bara har skrivit inte fungerar eftersom en del av beräkningen är för stor. Det visar resultaten som Infinity, som verkar om rätt.
Se om Ruby kan hitta ett annat problem:
2. 2. 2: 037> x + 5 NameError: odefinierad lokal variabel eller metod & x N'; för huvud: Objekt från (irb): 37 från / usr / bin / irb: 11: i &N';
I det här fallet försökte du använda en variabel som du inte har lagrat något i. Ruby vet inte vad man ska göra här, eftersom det inte kan hitta en variabel som heter x (ännu).Du ser ofta detta fel om du skriver ett typsnitt i namnet på en variabel (eller metod). Kontrollera din stavning och försök igen.
Ett annat vanligt Ruby-fel kan ses med den här koden:
2. 2. 2: 038> x = nil => nil 2. 2. 2: 039> x + 5 NoMethodError: odefinierad metod & + N'; för noll: NilClass från (irb): 39 från / usr / bin / irb: 11: i &N';
Du kan tänka på nil som Rubys sätt att representera "ingenting". "Felet Ruby visar betyder att det inte vet hur man gör tillägg med noll, vilket verkar rimligt. I din kod betyder det förmodligen att du förväntas få resultat från någon annan del av programmet, men koden returnerade ingenting.
Ett sista problem som du ibland ser är om du försöker göra något med oförenliga data:
2. 2. 2: 040> x = "a" => "a" 2. 2. 2: 041> x + 5 TypeError: ingen implicit konvertering av Fixnum till String från (irb): 41: i & + N'; från (irb): 41 från / usr / bin / irb: 11: i &N';
Bokstaven a är tilldelad variabel x. Här försökte du dock lägga till nummer 5 till bokstaven a. Det är uppenbart att det här är nonsens. Ruby tror det också, och berättar att det inte kan konvertera data på ett sätt för att få det att fungera.
Du kommer förmodligen att gå in i syntaxfel oftast, eftersom skrivfel är de enklaste buggarna att göra. När du ser ett felmeddelande är din bästa åtgärd att noga jämföra vad du skrev med ditt projektets kod.