Powrót do bloga

Przegląd typów danych w języku Ruby

Przegląd typów danych w języku Ruby

Ruby to znany język programowania. Jego celem jest zwiększenie prostoty i produktywności. Jest to również w pełni obiektowy język programowania. Ponadto Ruby charakteryzuje się elegancką składnią, która jest naturalna do czytania i łatwa do pisania.

Każde programowanie wymaga zarządzania różnymi typami danych. Typ danych opisuje określoną klasę danych. Informuje maszynę, jak powinna traktować dane w programie. Typy danych są kluczowe dla określenia, co można zrobić z danymi (w tym operacji, które można na nich wykonać). W tym samouczku zagłębimy się w typy danych dostępne w języku Ruby. Przyjrzymy się również dynamicznemu typowaniu. Dzięki tej funkcji Ruby może automatycznie określić typ danych zmiennej bez jej jawnego deklarowania. Zaczynajmy!

Wymagania wstępne

Aby przećwiczyć i wdrożyć kroki przedstawione w tym przewodniku, będziesz potrzebować następujących komponentów:

Typy danych w Ruby

Ruby oferuje wszystkie popularne typy danych, które można spotkać w każdym języku programowania: liczby całkowite, liczby zmiennoprzecinkowe, ciągi znaków, tablice, symbole, hashe itp. Następnie przedstawimy omówienie sposobu pracy z różnymi typami danych w języku Ruby.

Krok 1 – Liczby całkowite

Podobnie jak w matematyce, liczby całkowite w programowaniu komputerowym to liczby całkowite. Wartość może być dodatnia, ujemna lub wynosić 0. Zakres wartości jest następujący:

Czas wypróbować liczby całkowite w Ruby. Pierwszym przykładem jest wyświetlenie prostej liczby całkowitej na ekranie:

Data Types in Ruby 1

Następnie będziemy pracować ze zmienną typu całkowitego. Tutaj zmienna sample_int zawiera wartość całkowitą (99), a funkcja print wypisuje wartość zmiennej na ekranie:

Data Types in Ruby 2

Możemy również wykonywać operacje matematyczne na liczbach całkowitych. Poniższy przykład pokazuje proste dodawanie dwóch liczb całkowitych:

Kiedy pracujemy z dużymi liczbami, często używamy przecinków (,), aby ułatwić ich czytanie. Na przykład jeden milion (1000000) jest zapisywany jako 1,000,000 dla lepszej czytelności. Chociaż używanie przecinków jest zabronione, Ruby pozwala na używanie podkreśleń ( _) jako separatora. Spójrz na poniższy przykład:

Data Types in Ruby 3

Używanie podkreśleń poprawia czytelność kodu, szczególnie w przypadku dużych wartości całkowitych.

Krok 2 – Liczby zmiennoprzecinkowe

Liczba zmiennoprzecinkowa (lub w skrócie float) reprezentuje liczbę rzeczywistą. Podobnie jak w definicji matematycznej, liczby rzeczywiste mogą być wymierne lub niewymierne. W Ruby float to zasadniczo liczba zawierająca kropkę dziesiętną.

Spróbujmy wyświetlić wartość zmiennoprzecinkową na ekranie:

Kolejny przykład pokazuje deklarowanie zmiennej zmiennoprzecinkowej:

Możemy również wykonywać różne operacje matematyczne na wartościach i zmiennych zmiennoprzecinkowych. Poniższy przykład pokazuje proste dodawanie dwóch liczb zmiennoprzecinkowych:

Co jeśli dodamy liczbę zmiennoprzecinkową i całkowitą? Wynikowa wartość będzie liczbą zmiennoprzecinkową. W poniższym przykładzie, mimo że 55.0 jest liczbą całkowitą, jest traktowana jako float:

Krok 3 – Boolean

Wartości logiczne reprezentują wartości prawdy w dziale logiki matematycznej. W Ruby logiczne typy danych są reprezentowane przez dwie wartości: true oraz false:

  • Większe niż

    • 100 > 99: true

    • 99 > 100: false

  • Mniejsze niż

    • 500 < 999: true

    • 999 < 500: false

  • Równe

    • 10 == 10: true

    • 9 == 99: false

Podobnie jak liczby, możemy również przechowywać true lub false wartość w zmiennej. Poniższy przykład demonstruje tę funkcję:

Step 4 – Ciągi znaków

W programowaniu ciąg znaków jest reprezentowany jako sekwencja znaków (liter, cyfr i symboli). W języku Ruby ciągi znaków występują w pojedynczych cudzysłowach ( ') lub podwójnych cudzysłowach ( "). Już szczegółowo omówiliśmy używanie ciągów znaków w Ruby, więc będzie to krótka sekcja.

Poniższy przykład to podstawowy program hello world w języku Ruby:

Możemy również przechowywać ciągi znaków w zmiennych. Poniższy przykład obejmuje także konkatenację ciągów znaków:

Data Types in Ruby 4

Step 5 – Tablice

Tablica to struktura danych, która może przechowywać kolekcję elementów tego samego typu o stałym rozmiarze. Można ją również wyobrazić sobie jako kolekcję zmiennych tego samego typu danych. Jest to jedna z najbardziej podstawowych struktur danych w większości nowoczesnych języków programowania.

W języku Ruby tablicę definiuje się w następujący sposób:

Możliwe jest utworzenie tablicy dowolnych innych typów danych, które omówiliśmy do tej pory (liczby całkowite, zmiennoprzecinkowe i ciągi znaków). Oto kilka przykładów:

  • Liczby całkowite: [-5, 0, 5]

  • Liczby zmiennoprzecinkowe: [-9.99, -6.99, -3.99, 0, 3.99]

  • Ciągi znaków: [“the”, “quick”, “brown”, “fox”]

Poniższy przykład implementuje wszystkie te typy tablic:

Data Types in Ruby 5

Zauważ, że gdy funkcja print napotka tablicę, wypisuje całą tablicę na ekranie. Dla większej wygody często będziesz spotykać tablice jako zmienne. Zaktualizujmy kod:

Data Types in Ruby 6

Data Types in Ruby 7

Teraz możemy pracować z poszczególnymi elementami tablic:

Data Types in Ruby 7

Zauważ, że w języku Ruby indeksowanie tablic zaczyna się od 0.

Dla wygody tablice w języku Ruby posiadają metody .first oraz .last, które wypisują pierwszy i ostatni element:

Data Types in Ruby 8

W języku Ruby tablice mają jeszcze jedną ciekawą cechę. Mogą przechowywać różne typy danych jednocześnie. Na przykład można w nich przechowywać ciągi znaków, symbole, a nawet inne tablice:

Data Types in Ruby 9

Krok 6 – Symbole

W języku Ruby, symbol to specjalny typ danych, który działa jak etykieta lub identyfikator. Symbole są niezmienne, co oznacza, że nie można ich zmienić. Symbole wyglądają tak, jakby deklarowano zmienne bez żadnej wartości.

Oto przykład symbolu:

Zazwyczaj symbole są używane do identyfikowania czegoś ważnego. W innych sytuacjach jednak łańcuchy znaków są w zupełności wystarczające.

Ruby, będąc językiem obiektowym, traktuje wszystko jako obiekt (w tym łańcuchy znaków) z jego unikalną lokalizacją w pamięci, nawet jeśli te łańcuchy są identyczne. Jednak kiedy odwołujesz się do symbolu, jest to ten sam obiekt w każdym miejscu programu, ta sama lokalizacja w pamięci.

Krok 7 – Hashe

Hash to przypominająca słownik kolekcja kluczy i wartości. Często hashe są używane do przechowywania powiązanych danych, na przykład informacji o użytkowniku.

Oto szybki przykład hasha. Utworzyliśmy hash user_info zawierający nazwę użytkownika i hasło użytkownika:

Data Types in Ruby hashing in ruby

Aby pobrać wartości pary klucz-wartość, musimy użyć klucza. Poniższy przykład demonstruje ten proces:

Data Types in Ruby retrieve value using key

Ruby pozwala również na definiowanie hasha przy użyciu nieco innej składni ( : zamiast =>):

Data Types in Ruby retrieving value using key

Ta struktura składniowa jest podobna do składni używanej w innych językach, na przykład JavaScript. W tej strukturze składniowej klucze są zdefiniowane jako symbole. Dlatego zamiast używać "username", używamy: username aby uzyskać dostęp do wartości.

Typowanie dynamiczne

Być może zauważyłeś już, że podczas deklarowania zmiennej nie musimy jawnie przypisywać typu danych. Zamiast tego typ danych określa wartość zmiennej. Ruby używa dynamicznego typowania, w którym sprawdzanie typów odbywa się w czasie wykonywania. Dla kontrastu, typy danych są określane podczas kompilacji w statycznie typowanych językach programowania (na przykład C/C++).

W poniższym przykładzie wszystkie wartości przypisane do zmiennej dyn_var są prawidłowe:

W językach z dynamicznym typowaniem możemy swobodnie użyć ponownie istniejącej zmiennej do przechowywania różnych typów danych. Tutaj poprzedni przykład został zaktualizowany, aby zademonstrować to zjawisko:

dynamically typed variables

Jak pokazuje ten przykład, za każdym razem, gdy przypisywana jest nowa wartość, zmienia to typ danych zmiennej dyn_var na bieżąco. Jest to przydatne przy konwersji jednego typu danych na inny. Poniższy przykład to demonstruje:

get input and cast

Tutaj,

  • Ponieważ dane wejściowe z klawiatury są łańcuchami znaków, length jest na początku łańcuchem znaków.

  • Ponieważ naszą pożądaną wartością jest liczba zmiennoprzecinkowa, konwertujemy wartość tekstową na liczbę zmiennoprzecinkową za pomocą to_f metody.

  • Z powodu zmiany wartości, length ma przypisany zmiennoprzecinkowy typ danych. To właśnie widzimy podczas wypisywania jej wartości na ekranie.

Co by się stało, gdybyśmy spróbowali połączyć dwa różne typy danych? Ruby zgłosi błąd. Spójrz:

mixing two datatypes

Identyfikacja typów danych

W języku Ruby wszystko jest traktowane jako obiekt. Każdy obiekt w Ruby posiada metodę class. Po wywołaniu ta metoda informuje, jakiego typu danych jest źródło. Oto kilka przykładów użycia metody class:

get classes name

Innym sposobem na określenie typu danych jest użycie metody kind_of?. Sprawdza ona typ danych obiektu pod kątem żądanego typu danych i zwraca wartość logiczną. Zobacz to w poniższym przykładzie:

check datatype

Podobnie, istnieje inna metoda is_a?, która porównuje typ danych i zwraca wartość logiczną. Jedyną różnicą jest nazwa metody. Może być ona jednak preferowana, ponieważ jest nieco łatwiejsza do odczytania i zrozumienia dla programistów. Zaktualizuj poprzedni przykład za pomocą is_a?:

check datatype

Podsumowanie

Praca z dowolnym językiem programowania wymaga dobrego zrozumienia obsługiwanych przez niego typów danych. W tym przewodniku zbadaliśmy najpopularniejsze typy danych używane w programowaniu w Ruby. Omówiliśmy i zademonstrowaliśmy liczby całkowite, liczby zmiennoprzecinkowe, ciągi znaków, symbole, wartości logiczne i hashe (wraz z przykładami).

Zapoznaj się z innymi poradnikami na naszym blogu, które pomogą Ci poznać Ruby:

Miłego kodowania!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.