Ring Kettingen

Als toevoeging tot de bouwers zoals rangeen spreadis het manipuleren van bestaande ringen, een andere manier om nieuwe ringen te maken.

Ketting Commando’s

Neem deze eenvoudige ring om dit te verkennen:

(ring 10, 20, 30, 40, 50)

Wat als we deze andersom willen? Dan kunnen we het chain commando `.reverse nemen om de ring om te draaien:

(ring 10, 20, 30, 40, 50).reverse  #=> (ring 50, 40, 30, 20, 10)

En wat als we de eerste drie waarden van de ring willen nemen?

(ring 10, 20, 30, 40, 50).take(3)  #=> (ring 10, 20, 30)

En wat als we de ring willen verschuiven?

(ring 10, 20, 30, 40, 50).shuffle  #=> (ring 40, 30, 10, 50, 20)

Meerdere Kettingen

Dit is al een krachtige manier om nieuwe ringen te creëren. De echte kracht komt wanneer je een paar van deze opdrachten samen chaint.

Wat denk je ervan de ring te shuffelen, 1 element te laten vallen en vervolgens de volgende 3 te nemen?

Laten we dit in fasen doen:

  1. (ring 10, 20, 30, 40, 50) - our initial ring
  2. (ring 10, 20, 30, 40, 50).shuffle - shuffles - (ring 40, 30, 10, 50, 20)
  3. (ring 10, 20, 30, 40, 50).shuffle.drop(1) - drop 1 - (ring 30, 10, 50, 20)
  4. (ring 10, 20, 30, 40, 50).shuffle.drop(1).take(3) - take 3 - (ring 30, 10, 50)

Kan je nu zien dat we een lange ketting van deze methoden kunnen gebruiken door deze bij elkaar te plakken. We kunnen deze in eender welke volgorde combineren en ontwikkellen hierbij een uiterst rijke en krachtige manier om nieuwe ringen van bestaande ringen te creëren.

Onveranderbaarheid

Deze ringen hebben een krachtige en belangrijke eigenschap. Ze zijn onveranderlijk wat betekent dat je ze niet kunt veranderen. Dit betekent dat de chaining methode die in deze sectie beschreven word ringen niet veranderd maar eerder nieuwe ringen maakt. Dit betekent dat u vrij bent om te ringen te delen met threads en je hen kan beginnen chainen binnen een thread met de wetenschap dat je geen andere thread zal beïnvloeden die gebruik maakt van dezelfde ring.

Beschikbare Chain Methoden

Hier is een lijst van de beschikbare chain methoden voor jou om mee te spelen:

Natuurlijk, kan je in deze chain methoden ook andere cijfers gebruiken! Dus voel je vrij om .drop(5) in plaats van .drop(3) als je de eerste 5 elementen wilt laten vallen.