Jakie jest znaczenie w Ruby?

Jakie jest znaczenie w Ruby?

Ruby to niesamowity język programowania wypełniony nowoczesnymi funkcjami i narzędziami dla większości środowisk programistycznych. Ruby ma jedną potężną, często pomijaną funkcję: Bloki.

Istotą tego artykułu jest omówienie i zrozumienie, jakie są bloki Ruby, jak działają i jak możemy je wykorzystać w naszych programach Ruby.

Zaczniemy od podstawowej składni, a następnie omówimy funkcje takie jak wydajność, które mogą być zastraszające dla nowych użytkowników Ruby.

Co to są bloki rubinowe?

Podobnie jak w przypadku innych języków programowania, blok lub zamknięcie to funkcja anonimowa, którą umieszczasz w przypadku słów kluczowych do i końcówek dla bloków wbudowanych.

Bloki umożliwiają grupowanie bloku kodu na osobne komponenty, które można przekazać podczas wywołania metody jako parametry.

Istnieją dwa sposoby zdefiniowania bloku w Ruby: Pierwszy to użycie do… Słowa kluczowego końc.

Do… Blok końcowy jest głównie używany podczas definiowania bloku kodu, który obejmuje wiele linii, podczas gdy klamrowe klamry są używane podczas definiowania bloku kodu, który obejmuje pojedynczy linię.

Przekazujesz argumenty bloku między parą znaków rur | |

WSKAZÓWKA: Niezależnie od tego, czy używasz jednego linii czy bloku wieloletniego, funkcjonalność się nie zmienia. Jednak do celów czytelności użyj klastrowych aparatów ortodontycznych dla jednego bloku liniowego i do końca dla bloków wieloletnich.

Podstawowy przykład

Poniżej znajdują się dwa proste przykłady bloku rubinowego, jeden używa klastrowych aparatów ortodontycznych, podczas gdy drugie.

# pojedyncza linia -
[„Java”, „c”, „c ++”].każdy | i | Puts I
# multi -line -> do… koniec
[„Java”, „c”, „c ++”].każdy do | i |
Umieszcza ja
koniec

Oba powyższe przykłady dają podobne wyniki:

  • Jawa
  • C
  • C++

Powyższy przykład stosuje bloki rubinowe w najprostszej formie: przekazujemy blok w każdej metodzie obiektu tablicy. Przekaż argumenty bloku w parach znaków rur; W powyższym przykładzie argumentem jest ja. Wreszcie, przedstawiamy funkcjonalność bloku wewnątrz ciała bloku (w tym przykładzie, Puts).

Zrozumienie słowa kluczowego Ruby ploton

Możesz użyć bloków rubinowych w standardowej metodzie. Funkcjonalność wykonania tego działania jest dzięki uprzejmości słowa kluczowego.

Omówmy szczegółowo słowo kluczowe wydajności.

Co to jest w Ruby?

Wydajność słowa kluczowego w Ruby pozwala wywołać zdefiniowany blok w metodzie Ruby.

Jak to działa

Rozważmy przykład, który pomoże nam zrozumieć, jak działa słowo kluczowe plonu. Rozważ prostą metodę Ruby pokazaną poniżej:

def Hello
Umieszcza „Witam!"
koniec

Powyższy przykład jest prostą metodą Ruby, która drukuje „Hello!".

Jeśli chcemy zwiększyć elastyczność do programu, możemy pozwolić użytkownikowi przejść argument podczas wywołania metody.

Dlatego możemy zakodować metodę jako:

def Hello (nazwa)
Umieszcza „Hello”, + Nazwa
koniec
Hello („USA”)

W drugim przykładzie mamy niewielką elastyczność, ponieważ możemy przekazać dowolną nazwę do metody jako argument.

Możemy to jeszcze bardziej rozszerzyć za pomocą bloku rubinowego. Po przekazaniu bloku wewnątrz metody zostanie on wykonany i zwróci wyniki.

Definicja metody wydajności

Aby utworzyć metodę akceptującą blok, używamy wydajności słowa kluczowego. Ogólna składnia jest jak pokazana:

def Hello
dawać
koniec

Po definicji możemy wywołać metodę i przekazać blok kodu. Metoda wykona kod i zwróci wynik.

Przekazanie rubinowego bloku do metody

Możemy przekazać blok do metody za pomocą składni blokowej. Na przykład możemy wywołać powyższą metodę z składnią jako:

Witam umieszcza „Hello World”

Tak długo, jak metoda zawiera słowo kluczowe, możesz przekazać dowolny blok kodowy i wykonać.

NOTATKA: Po zdefiniowaniu słowa kluczowego w metodzie musisz przekazać blok podczas wywoływania metody. W przeciwnym razie otrzymasz błąd „Brak podanego bloku (wydajność)”.

Przykład 2

Weźmy kolejny przykład:

def Hello
stawia „przed wydajnością."
dawać
stawia „po wydajności."
koniec
Witam wkłada „ustępuję”

Powyższy przykład ilustruje, jak działa wykonywanie metody przy użyciu wydajności. Wyjście programu jest poniżej:

Przed wydajnością
Mam plon
po wydajności

Argumenty Ruby Block

Ruby pozwala przekazać argumenty do bloku Ruby. Argumenty blokowe są zdefiniowane w bloku wydajności i służą jako parametry bloku.

Kolejność, w jakiej przekazujesz argument, ma kluczowe znaczenie, ponieważ blok zaakceptuje je w ustalonej kolejności.

def Hello
wydajność („John Doe”, 20)
koniec
Witam | Imię, wiek | Umieszcza "Hello #Nazwa, jesteś #wiek lat"

Parametry zdefiniowane wewnątrz bloku mają zakres lokalny i są dostępne tylko w kontekście bloku.

Dlatego otrzymasz niezdefiniowaną zmienną używaną poza zakresem bloku.

Przykład 3

Funkcjonalność bloku nie zmienia się w blokach jednolodowych lub wieloletkowych. Możemy to zilustrować za pomocą poniższego przykładu:

Obszar def
wydajność (7)
koniec
obszar do
umieszcza „Obszar Cirle to #7 * 3.14159 CM2 "
koniec

Dane wyjściowe z powyższego przykładu to:

Obszar Cirle wynosi 21.99113CM2

To pokazuje, że bloki wielu linii lub jednokierunkowe funkcjonalność pozostaje taka sama.

Wyraźne bloki

W poprzednich przykładach zdefiniowaliśmy bloki jako domyślne. Możemy jednak opisać je jako wyraźne.

Wyraźne bloki oznaczają, że przypisujemy nazwę do listy parametrów metody.

def przykład (i blok)
blok.dzwonić
koniec
Przykład umieszcza „jawny przykład bloku”

Po ampersand przekazujesz nazwę bloku. Za pomocą nazwy bloku możesz przekazać zapisany blok do innej metody.

Obsługa błędów blokowych

W poprzednich sekcjach wspomnieliśmy, że blok plonów jest obowiązkowy. Możesz jednak zaimplementować prostą logikę obsługi błędów, jeśli dostarczona jest wydajność. Robimy to za pomocą block_given? Metoda jądra.

Metoda zwraca wartość logiczną True, jeśli wydajność jest dostępna i fałszywa, jeśli inaczej.

Rozważ prosty przykład poniżej:

def Hello
Jeśli block_given?
dawać
w przeciwnym razie
stawia „nic się nie wydarzyło… [błąd]”
koniec
koniec

Jeśli wywołamy metodę wymaganą wartością wydajności, wyjście będzie:

Witam Puts "Hello tam!"
Witam!

Z drugiej strony, wywołanie metody bez wydajności wykona blok innego jako:

Witam
Nic się nie wydarzyło… [Błąd]

Używając wartości z block_given? Metoda, możesz zaimplementować logikę obsługi błędów, gdy nie ma wartości wydajności.

Wniosek

W tym przewodniku omawialiśmy Ruby Blocks, jakie są, jak działają i jak korzystać z nich w swoich projektach.

Dziękuję za przeczytanie!