Ruby egy értelmezett, dinamikus, reflektív, objektumorientált programozási nyelv. A Yukihiro Matsumoto által kifejlesztett Ruby az egyszerűségre és a produktivitásra összpontosít. Az elegáns szintaxis lehetővé teszi a fejlesztők számára a kód könnyebb olvasását és írását.
Ebben az útmutatóban karakterláncokkal fogunk dolgozni Ruby-ban.
Előfeltételek
Az ebben az útmutatóban bemutatott lépések végrehajtásához a következő összetevőkre van szüksége:
- Egy megfelelően konfigurált Ubuntu rendszer. Tudjon meg többet a saját Ubuntu szerverének konfigurálásáról a CloudSigma-n.
- Bármilyen modern szövegszerkesztő, lehetőleg szintaxiskiemeléssel, például VS Code, Sublime Text, Atom, Brackets, Vim, stb.
A String adattípus
A programozásban a karakterlánc egy gyakori adattípus, amelyet minden modern programozási nyelv támogat. Karakterek sorozata jellemzi. A teljes karaktersorozatot egyetlen adategységként kezeli a rendszer. Egy karakterlánc tartalmazhat betűket, számjegyeket és különleges karaktereket/szimbólumokat.
A Ruby, mint tiszta objektumorientált programozási nyelv, a karakterláncokat objektumként kezeli. Sok más nyelvvel ellentétben a Ruby-ban a karakterláncok módosíthatók. Alapvetően a karakterlánc értéke helyben megváltoztatható.
1. lépés – Karakterláncok létrehozása és kiíratása
A Ruby-ban a karakterláncokat vagy egyszeres idézőjelek ( ') vagy kettős idézőjelek ( ") határolják. Az alábbi két érvényes karakterlánc a Ruby-ban:
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
Bármilyen kimenet konzolra történő kiíratásához a Ruby a következő metódust biztosítja: print metódus:
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
Ideje átültetni a gyakorlatba. Hozzon létre egy új Ruby fájlt practice.rb névvel, és írja be a következő kódokat:
Run the code:
|
1 |
ruby practice.rb |
Ahogy az várható volt, a print parancs kiírja a megadott karakterláncokat. Ha külön sorokba szeretnénk kiíratni a karakterláncokat, jobb, ha inkább a puts metódust használjuk. Frissítse a kódot:
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
Ezután futtassa újra a kódot:
|
1 |
ruby practice.rb |
2. lépés – Karakterlánc változók
A változók olyan nevek, amelyek a számítógép memóriájának egy meghatározott helyére utalnak, ahol egy érték van tárolva. A kívánt értéket eltárolhatjuk a változóban, és később felhasználhatjuk.
Ruby-ban egy karakterlánc változó deklarálásához határozza meg a változó nevét, és rendeljen hozzá egy karakterlánc értéket:
|
1 |
<variable_name> = <string> |
Írja be a következő kódot a practice.rb:
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
Futtassa a kódot:
|
1 |
ruby practice.rb |
Itt:
- Definiáltunk két változót, a first_half és a second_half változókat, amelyek mindegyikéhez hozzárendeltünk egy karakterlánc értéket.
- A puts metódus kiírja a változók értékét.
3. lépés – Karakterláncok összefűzése
Az összefűzéssel több karakterláncot vehetünk és kapcsolhatunk össze egy új karakterlánc létrehozásához. A karakterláncok összefűzését az összefűzés operátor ( +) jelöli. Vegye figyelembe, hogy ez a szimbólum az összeadás operátora is, amikor aritmetikai műveletekkel dolgozunk.
Próbáljuk meg elvégezni a karakterláncok összefűzését az eddig deklarált karakterláncokon:
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
Futtassa a kódot:
|
1 |
ruby practice.rb |
Ahogy a kimenet mutatja, az összefűzés nem szúr be semmilyen további karaktert a karakterláncok közé. Ezért van az, hogy a fox és a jumps szavak egybeolvadnak. Ezt kijavíthatjuk egy szóköz beiktatásával a fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
Futtassa a kódot:
|
1 |
ruby practice.rb |
Most már jobban néz ki a kimenet.
A karakterláncok összefűzése változókkal is működik. Tekintse meg a következő példát:
|
1 2 |
first_half = "a gyors barna róka " puts first_half + "átugorja a lusta kutyát" |
Run the code:
|
1 |
ruby practice.rb |
A következő példa az összefűzés (konkatenáció) egy hosszú láncolatát mutatja be:
|
1 2 3 |
username = "cloudsigma" fav_color = "kék" puts "hello, " + username + "! a kedvenc színed a(z) " + fav_color + "." |
Futtasd a kódot:
|
1 |
ruby practice.rb |
Eddig csak karakterlánc (string) változókkal foglalkoztunk. Mi van akkor, ha különböző változótípusok vannak? A következő program ezt a forgatókönyvet teszteli:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
Amikor megpróbálod futtatni ezt a programot, a Ruby egy hibaüzenetet fog dobni:
|
1 |
ruby practice.rb |
Azonban átalakíthatjuk az egészet karakterlánccá, hogy elkerüljük ezt a problémát:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
Itt:
-
A to_s metódus karakterlánccá alakítja a változó értékét.
A számok karakterlánccá alakítása gyakori jelenség, amikor olyan elemekkel dolgozunk, mint az irányítószámok, pénznemek, telefonszámok és egyéb numerikus adatok.
4. lépés – Karakterlánc-interpoláció
Bár a karakterláncok összefűzése egy hatékony funkció, nagyon könnyen trükkössé válhat. Sok helyzetben valószínűleg azon kapod magad, hogy hiányolod az összefűzés operátort ( +), ami nagy fejfájást okozhat. Ráadásul, ha különböző adattípusokkal dolgozol, először karakterlánccá kell alakítani őket. Szerencsére a Ruby más módszereket is kínál a változóértékek karakterláncba történő beillesztésére a karakterlánc-interpoláció.
Így néz ki. Például ahelyett, hogy ezt használnád:
|
1 |
"hello, " + username + "!" |
Ezt fogjuk használni:
|
1 |
"hello, #{username}!" |
Bár a szintaxis kissé furcsának tűnhet, drámaian leegyszerűsíti a kódot. Nem szükséges manuálisan meghívni a to_s metódust a változó értékének karakterlánccá alakításához.
Használjuk ezt az új technikát a korábbi kódunk frissítésére:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "hello, #{username}! a felhasználói azonosítód: #{user_id}" |
Futtasd a kódot:
|
1 |
ruby practice.rb |
5. lépés – Karakterlánc-literálok és karakterlánc-értékek
Figyeld meg, hogy a kódban deklarált karakterláncokat mindig idézőjelek veszik körül. Amikor azonban a kimenetet a konzol képernyőjére nyomtatjuk, nincsenek idézőjelek. Egyértelműen különbség van köztük.
- Karakterlánc-literál: Ez a forráskódban leírt karakterlánc (az idézőjelekkel együtt).
- Karakterlánc-érték: Ez a kimeneten megjelenő érték (idézőjelek nélkül).
Például a következő egy karakterlánc-literál:
|
1 |
"hello világ" |
Ennek a karakterlánc-értéke a következő lenne: hello világ.
6. lépés – Idézőjelek és aposztrófok eszképelése
Mint bemutattuk, az idézőjeleket és aposztrófokat a karakterláncok jelölésére használjuk a forráskódban. Ez problémát jelent: nem szerepelhetnek közvetlenül a karakterláncban. Ellenkező esetben problémákat okoznak. A következő kód ezt szemlélteti:
|
1 |
puts 'it's what it is' |
Különböző taktikák léteznek a probléma megkerülésére.
-
Alternatív karakterlánc-szintaxis használata
Ez a legegyszerűbb módja a probléma megkerülésének. Ha a karakterláncnak egyszeres idézőjelekre van szüksége, használj dupla idézőjeleket a karakterlánc-literálban (és fordítva).
Javítsuk ki az előző példát:
|
1 |
puts "it's what it is" |
Egy másik példa:
|
1 |
puts 'he said, "hello world"' |
Azonban ez nem fog minden helyzetben működni. Például:
|
1 |
puts "Clousdigma says, "I'm a happy boi!"" |
-
Eszkép karakterek használata
A fordított perjel ( \) karakterre gyakran eszkép (escape) karakterként hivatkoznak. Megakadályozza, hogy a Ruby a következő karaktert szó szerint értelmezze. Javítsuk ki az előző példát. Használj fordított perjelt, hogy megakadályozd, hogy a Ruby a belső dupla idézőjeleket literálként értelmezze:
|
1 |
puts "Cloudsigma says, \"I'm a happy boi!\"" |
-
Alternatív szintaxis használata
Eddig csak egyszeres és kétszeres idézőjelekkel dolgoztunk a karakterlánc-literál jelölésére. A korábbi példák azonban egyszerűen bemutatják, hogyan válhat ez nagyon gyorsan kezelhetetlenné. A probléma megoldására teljesen elhagyhatjuk az idézőjeleket, és egy teljesen más szimbólumot használhatunk a karakterlánc kezdetének és végének jelölésére.
Tekintse meg a következő példát:
|
1 |
%$the quick brown fox said, "I jumped over the lazy dog"$ |
Itt:
-
- A szimbólum% határozza meg a következő karaktert ( $, ebben az esetben) a karakterlánc határolójaként.
- A karakterlánc-literál itt a következő: $the quick brown fox said, "I jumped over the lazy dog"$.
Tegyük át a gyakorlatba:
|
1 |
puts %$the quick brown fox said, "I jumped over the lazy dog"$ |
Itt a karakterlánc alapvetően a következőként van kezelve:
|
1 |
"the quick brown fox said, \"I jumped over the lazy dog\"" |
Ez azonban újra előhozza a határolójel escape-elésének problémáját, ha azt használják a karakterláncon belül. Ennek elkerülésére az egyik módszer olyan szimbólumok használata, amelyek általában nem jelennek meg a karakterláncokban. Ilyen szimbólumok lehetnek például a kapcsos zárójelek, szögletes zárójelek stb.:
|
1 |
puts %{"hello, world!", he said} |
Kiválóan működik karakterlánc-interpolációval is:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{hello, #{username}.#{user_id}!} |
Gyakori továbbá a %Q{} és %q{} használata karakterláncok definiálására a Ruby programokban. Itt a %Q{} úgy működik, mint a dupla idézőjel, a %q{} pedig mint az egyszeres idézőjel.
7. lépés – Új sorok és hosszú karakterláncok
Karakterláncokkal való munka során előfordulhatnak olyan helyzetek, amikor új sort vagy kocsivissza (carriage return) karaktert szeretne beszúrni a karakterláncba. Ezt megtehetjük az \n (új sor) és \r (kocsivissza) escape karakterek bevezetésével.
Tekintse meg a következő példát:
|
1 2 |
hello_world = "the quick\nbrown fox\njumps over\nthe lazy dog" puts hello_world |
A karakterlánc-literál zavarosnak tűnik, igaz? Rendezzük át a jobb olvashatóság érdekében:
|
1 2 3 4 5 6 7 |
hello_world = "the quick\n" + "brown fox\n" + "jumps over\n" + "the lazy dog" puts hello_world |
Az új sor karakterek manuális deklarálása helyett a következő struktúrát is használhatjuk:
|
1 2 3 4 5 6 |
hello_world = "the quick brown fox jumps over the lazy dog" puts hello_world |
Ebben a módszerben a karakterlánc megőrzi az összes szóközt. Ez azonban elrontja a kimenetet. A javításhoz távolítsa el a felesleges szóközöket:
|
1 2 3 4 5 |
hello_world = "the quick brown fox jumps over the lazy dog" |
Bár a szóközprobléma megoldódott, ez csökkenti a kód olvashatóságát. Ezt a problémát egy heredoc implementálásával javíthatjuk, ami a többsoros karakterlánc-literálok elnevezése. A frissített kód így nézne ki:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END the quick brown fox jumps over the lazy dog END puts hello_world |
A Ruby v2.3-as és újabb verzióitól kezdve elérhető egy másik funkció is, amelyet hullámos (squiggly) heredoc szintaxisnak neveznek. Ez eltávolítja a kezdő szóközöket a karakterláncokból. Egy hullámos (squiggly) heredoc kifejezéséhez cserélje ki a kötőjelet ( -) egy hullámvonalra ( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END a gyors barna róka átugrik felett a lusta kutya END puts hello_world |
8. lépés – Karakterláncok ismétlése
Bizonyos helyzetekben szükség lehet egy karakterlánc többszöri megismétlésére. A Ruby különböző módokat kínál a karakterláncok replikálására.
Az egyik ilyen technika a * operátor használata. Általában ezt szorzás operátorként használják számok esetén. Karakterláncok esetén azonban ez lesz a karakterlánc-ismétlő operátor, amely a megadott karakterláncot annyiszor ismétli meg, ahányszor szükséges. Az ismétlések számának egész számnak kell lennie.
A következő példában a Boris szöveg 5-ször fog megismétlődni:
|
1 |
print "Boris" * 5 + "\n" |
Ezzel a funkcióval klassz ASCII-művészetet is készíthetünk. Tekintse meg a következő példát:
|
1 2 3 |
puts "=" * 15 puts "| hello world |" puts "=" * 15 |
Záró gondolatok
A karakterláncok alapvető fontosságúak a programozásban. Ez az útmutató bemutatja a karakterláncok kezelését Ruby-ban. Megtanultuk, hogyan hozhatunk létre karakterláncokat, és hogyan végezhetünk el különféle műveleteket, például az összefűzést, az új sorok kezelését, az idézőjeleket stb. A karakterlánc-interpoláció segítségével azt is megtanultuk, hogyan lehet a változók értékeit jobban beépíteni a karakterláncokba. A karakterlánc-ismétlő operátor használatával egyetlen karakterláncot is megismételhetünk többször.
Bár a Ruby önmagában is egy kiváló programozási nyelv, gyakran kombinálják a Rails keretrendszerrel. Ruby on Rails egy nyílt forráskódú webalkalmazás-keretrendszer. Tudjon meg többet a Ruby on Rails Ubuntu-ra történő telepítéséről telepítéséről. A Ruby azonban más alkalmazásokkal is együttműködik, mint például a MySQL és PostgreSQL.
Kellemes programozást!












































Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.