Velkommen til Ruby on Rails From Scratch Week 4! Denne uken skal vi snakke om ruby syntaks. Etter denne opplæringen tror jeg at du vil ha en mye bedre forståelse av rammen og føle deg mye mer behagelig å gjøre ting selv. Oh yeah, og det er en overraskelse denne uken - en screencast! Så uten videre, her er uke 4!
Hvis du ikke har lest del 1, 2 eller 3, anbefales det sterkt at du vurderer dem før du fortsetter med denne opplæringen.
I forrige uke lærte vi mer om rammen. Spesielt snakket vi om ting som interagerer mellom forskjellige kontrollører ved å arve handlinger, gjengivelse og omdirigering.
Som du kanskje forventer, kan du nesten ikke lære et helt språk i en opplæring, så vi må sannsynligvis spenne bare viktige rubin i to opplæringsprogrammer. Uansett, for denne opplæringen ser jeg oss til å dekke tall og strenger. Disse er trolig de to mest grunnleggende og essensielle teknikkene i ruby-språket. Faktisk, når du får tak i strenger og tall, vil du sannsynligvis ikke engang tenke på noe av dem når du bruker dem.
En type klasse i rubinprogrammeringsspråket er tall. Faktisk er det to typer tall; heltall og flytende poeng. Heltall er standardnummeret. Hvis du husker tilbake til matematikklassen, kan heltall ikke ha desimaler. På samme måte, i flytende poeng, kan du ha et desimalpunkt. Et annet viktig poeng er at tallene til slutt konverteres til en streng, men etter at nesten alt annet er utført. Derfor kan tall og strenger ikke gjøre ting sammen som konkatenate.
Heltall er standardnumrene som brukes i ruby-språket. Bruk dem hvis du ikke trenger å håndtere et desimalpunkt. For eksempel er heltalene gode for å telle av dem. Hvis du utfører en beregning i rubin som et heltall, og det har et desimaltegn, vil det i hovedsak bli hugget av:
beregning:
<%= 7/4 %>
Resultat: 1
Så, hvordan bruker du akkurat flytende poeng i stedet for heltall? Det er en metode som konverterer den:
<%= 7/4.to_f %>
Resultat: 1,75
Ofte vil du ønske å konvertere en type objekt til en annen slik at du kan få det til å samhandle med objekter av den klassen. Heldigvis gjør rubin det veldig enkelt:
Konverter til streng:
<%= '5'.to_s %>
Konverter til helhet:
<%= '5'.to_i %>
Konverter til flytende punkt:
<%= '5/3'.to_f %>
Når du konverterer et tall til et flytpunkt, får du flere metoder for å søke på det. De viktigste er hvordan man kan manipulere nummeret når man avrunder.
avrunding
<%= (5/3.to_f).round %>
Hvis du har et flytende punktnummer der du ikke vil ha desimal, har du i utgangspunktet ett av tre alternativer. Avrunding vil runde opp eller ned til nærmeste hele siffer. Det vil runde til nærmeste siffer. (dvs. 2,3 vil være 2 og 2,55 vil være 3) I dette tilfellet vil resultatet være 2.
ceil
<%= (5/3.to_f).ceil %>
På samme måte som navnet antyder, vil takmetoden bremse det flytende punktet opp et tall. Så hvis det er 1,2, blir det 2 og hvis det er 1,6, vil det fortsatt være 2. I så fall vil resultatet være 2.
Gulv
<%= (5/3.to_f).floor %>
Gulv er motsatt av taket, ved at det støter det ned. Med andre ord kan du tenke på det som om det bare er å kutte desimaltegnet og / eller som hva som ville skje i et normalt heltall. I dette tilfellet vil resultatet være 1.
Ofte når du programmerer, må du telle. Det er en kortere metode i rubin, i stedet for variabel = variabel +1:
Legg til 1 i variabelen: += 1
Trekk 1 fra variabelen: -= 1
Flere variabelen med to: * = 2
Del variabelen med to: / = 2
Så bruk ovenstående, la oss bruke det:
Counting Count: <%= count = 5 %> Legg til 1 (+ =): <%= count += 1%> Trekk 1 (- =): <%= count -= 1%> Multipliser med 2 (* =): <%= count *= 2%> Del med 2 (/ =): <%= count /= 2%>
Som produserer dette:
Vi har allerede jobbet med strenger litt. Husk alt det "Hvorfor Hei" ting tilbake i uke 2? Hvis du ikke er sikker på å sjekke tilbake. Vi delte allerede med gjenkjenne strenge og sammenkobling. For en rask anmeldelse er det et utdrag fra strengseksjonen:
Stringkonsentrasjon
Du kan lage en streng i rubin ved å bruke sitater. Du kan til og med kombinere strenger sammen ved å sammenkoble dem sammen. Det er flere måter å gjøre dette på. Den mest logiske, er å behandle det som matte:
String Demo <%= 'This is kind of boring' %>
<%= 'Will I combine' + 'With You?' %>
Når vi skriver ut dette, viser vi hvor nøyaktig rubin er skjønt. Legg merke til at det ikke er plass mellom kombinere og med. For å legge til et mellomrom bare legg til ett før tilbudet på slutten av kombinasjonen eller før med.
Andre måter å kombinere strenger med
Du kan kombinere strenge to andre måter også. En metode ville være
<%= 'Will I combine'.concat('With You?') %>
Dette formatet er standarden for de fleste modifikatorer. Vi vil dekke flere måter senere. Vi har også en tredje måte å kombinere strenger med.
<%= 'Will I combine' << 'With You?' %>
Vær oppmerksom på at med denne siste metoden kan du ikke ha en tom streng. Så hvis du skal fylle strengen med en variabel, vil jeg bruke en av de to første, bare hvis variabelen ikke har en verdi.
Her er noen flere metoder du kan søke på strenger. De fleste er selvforklarende, så jeg vil bare vise koden. For alle disse metodene kan du anta at jeg allerede har erklært en lokal variabel som heter tekst
.
Utnytt
<%= text.capitalize %>
Byttesett
<%= text.swapcase %>
Up Case
<%= text.upcase %>
Down Case
<%= text.downcase %>
Omvendt
<%= text.reverse %>
Strip
<%= 'Goodbye' + ' whitespace '.strip + 'And Hello!' %>
Strip-metoden gjør at vi kan fjerne hvitt mellomrom fra strengen.
Sette
<%= text.insert(5, '*Excuse Me* ') %>
Sette er nesten som concat-metoden, bortsett fra at du sender to argumenter i stedet for en. (Det ekstra argumentet er plasseringen i strengen for å sette inn teksten.) Vær også oppmerksom på at innsetting i en variabel vil sette strengen permanent inn i variabelen.
Lengde
<%= text.length %>
De lengde Metoden returnerer ikke noe i strengen, men det forteller deg noe om strengen; spesifikt lengden på strengen.
Daisy Chaining Methods
<%= text.swapcase.reverse.strip %>
På samme måte som JQuery, er en fin funksjon om rubin-metoder kjedbarheten som tillater mindre kode å bli skrevet.
Du kan bruke enten dobbelt eller enkelt anførselstegn i rubin. Det spiller ingen rolle. Selv om det er noen spesielle hendelser der du kanskje vil bruke den ene over den andre; Som hovedregel velger du en og holder deg til det. Nå vil jeg liste noen scenarier hvor du foretrekker en over en annen.
Et sitat i strengen
Hvis du enten har et enkelt eller dobbelt sitat i selve strengen, kan det være lurt å pakke strengen rundt den andre typen sitat. På den sjeldne sjansen for at du har et dobbelt og et enkelt anførselstegn inne i strengen, kan du bruke bakstreken (\) før symbolet for å indikere at det ikke skal avslutte strengen.
<%= "Sally's cat is brown." %> <%= 'The "cat" is brown.' %> <%= 'Sally\'s "cat" is brown.' %> <%= 'I love the \\ mark.' %>
Ovennevnte kode vil sende ut som følgende:
Sallys katt er brun.
Katten er brun.
Sallys "katt" er brun.
Jeg elsker \ -merket.
Utfør kode i midten av en streng
Normalt er det ganske utfordrende å utføre kode midt i en streng. I rubin er det en enda enklere måte enn sammenkobling:
<%= "This string #'*hguoC* '.reverse * 3 just got interrupted."%>
Som du kan se ovenfor koden kan du utføre rubinkode inni en streng. Vær oppmerksom på at du må bruke dobbelt anførselstegn med strengen.
Ok, så forhåpentligvis har du en mye bedre og dypere forståelse av tall og strenger, og hvordan du arbeider med hver av dem. Neste uke snakker vi om mer rubinsyntax; spesielt områder og hash. Når du vet hvordan du skal jobbe med dem, vil dine muligheter vokse uendelig. Pass på at du har et godt håndtak på dette også i neste uke; prøv å eksperimentere og se hva som fungerer. Som vanlig, hvis du fant dette nyttig, vennligst graver det!