Lucas Carlson, Leonard Richardson ruby. receptury full scan.pdf

(10594 KB) Pobierz
888847818.001.png
2.4. Reprezentowanie liczb wymiernych
76
2.5. Generowanie liczb pseudolosowych
77
2.6. Konwersje między różnymi podstawami liczenia
79
2.7. Logarytmy
80
2.8. Średnia, mediana i moda
83
2.9. Konwersja stopni na radiany i odwrotnie
85
2.10. Mnożenie macierzy
87
2.11. Rozwiązywanie układu równań liniowych
91
2.12. Liczby zespolone
94
2.13. Symulowanie subklasingu klasy Fixnum
96
2.14. Arytmetyka liczb w zapisie rzymskim
100
2.15. Generowanie sekwencji liczb
105
2.16. Generowanie liczb pierwszych
107
2.17. Weryfikacja sumy kontrolnej w numerze karty kredytowej
111
3.
Data i czas .....................................................................................................................113
3.1. Odczyt dzisiejszej daty
115
3.2. Dekodowanie daty, dokładne i przybliżone
119
3.3. Drukowanie dat
122
3.4. Iterowanie po datach
126
3.5. Arytmetyka dat
127
3.6. Obliczanie dystansu między datami
129
3.7. Konwersja czasu między strefami czasowymi
131
3.8. Czas letni
134
3.9. Konwersje między obiektami Time i DateTime
135
3.10. Jaki to dzień tygodnia?
138
3.11. Obsługa dat biznesowych
139
3.12. Periodyczne wykonywanie bloku kodu
140
3.13. Oczekiwanie przez zadany odcinek czasu
142
3.14. Przeterminowanie wykonania
145
4. Tablice .......................................................................................................................... 147
4.1. Iterowanie po elementach tablicy
149
4.2. Wymiana zawartości bez używania zmiennych pomocniczych
152
4.3. Eliminowanie zdublowanych wartości
154
4.4. Odwracanie kolejności elementów w tablicy
155
4.5. Sortowanie tablicy
156
4.6. Sortowanie łańcuchów bez rozróżniania wielkości liter
158
4.7. Zabezpieczanie tablic przed utratą posortowania
159
6 | Spis treści
4.8. Sumowanie elementów tablicy
164
4.9. Sortowanie elementów tablicy według częstości występowania
165
4.10. Tasowanie tablicy
167
4.11. Znajdowanie N najmniejszych elementów tablicy
168
4.12. Tworzenie hasza za pomocą iteratora inject
170
4.13. Ekstrahowanie wybranych elementów z tablicy
172
4.14. Operacje teoriomnogościowe na tablicach
175
4.15. Partycjonowanie i klasyfikacja elementów zbioru
177
5. Hasze ........................................................................................................................... 183
5.1. Wykorzystywanie symboli jako kluczy
186
5.2. Wartości domyślne w haszach
187
5.3. Dodawanie elementów do hasza
189
5.4. Usuwanie elementów z hasza
191
5.5. Tablice i inne modyfikowalne obiekty w roli kluczy
193
5.6. Kojarzenie wielu wartości z tym samym kluczem
195
5.7. Iterowanie po zawartości hasza
196
5.8. Iterowanie po elementach hasza w kolejności ich wstawiania
200
5.9. Drukowanie hasza
201
5.10. Inwersja elementów hasza
203
5.11. Losowy wybór z listy zdarzeń o różnych prawdopodobieństwach
204
5.12. Tworzenie histogramu
207
5.13. Odwzorowanie zawartości dwóch haszów
209
5.14. Ekstrakcja fragmentów zawartości haszów
210
5.15. Przeszukiwanie hasza przy użyciu wyrażeń regularnych
211
6.
Pliki i katalogi .............................................................................................................. 213
6.1. Czy taki plik istnieje?
216
6.2. Sprawdzanie uprawnień dostępu do plików
218
6.3. Zmiana uprawnień dostępu do plików
220
6.4. Sprawdzanie, kiedy plik był ostatnio używany
223
6.5. Przetwarzanie zawartości katalogu
224
6.6. Odczytywanie zawartości pliku
227
6.7. Zapis do pliku
230
6.8. Zapis do pliku tymczasowego
232
6.9. Losowy wybór wiersza z pliku
233
6.10. Porównywanie dwóch plików
234
6.11. Swobodne nawigowanie po „jednokrotnie odczytywalnych”
strumieniach wejściowych
238
Spis treści | 7
6.12. Wędrówka po drzewie katalogów
240
6.13. Szeregowanie dostępu do pliku
242
6.14. Tworzenie wersjonowanych kopii pliku
245
6.15. Łańcuchy udające pliki
248
6.16. Przekierowywanie standardowego wejścia i standardowego wyjścia
250
6.17. Przetwarzanie plików binarnych
252
6.18. Usuwanie pliku
255
6.19. Obcinanie pliku
257
6.20. Znajdowanie plików o określonej własności
258
6.21. Odczytywanie i zmiana bieżącego katalogu roboczego
260
7.
Bloki kodowe i iteracje ...............................................................................................263
7.1. Tworzenie i wywoływanie bloku kodowego
265
7.2. Tworzenie metod wykorzystujących bloki kodowe
267
7.3. Przypisywanie bloku kodowego do zmiennej
269
7.4. Bloki kodowe jako domknięcia: odwołania do zmiennych zewnętrznych
w treści bloku kodowego
272
7.5. Definiowanie iteratora dla struktury danych
273
7.6. Zmiana sposobu iterowania po strukturze danych
276
7.7. Nietypowe metody klasyfikujące i kolekcjonujące
278
7.8. Zatrzymywanie iteracji
279
7.9. Iterowanie równoległe
281
7.10. Kod inicjujący i kończący dla bloku kodowego
285
7.11. Tworzenie systemów luźno powiązanych przy użyciu odwołań zwrotnych
287
8.
Obiekty i klasy .............................................................................................................291
8.1. Zarządzanie danymi instancyjnymi
294
8.2. Zarządzanie danymi klasowymi
296
8.3. Weryfikacja funkcjonalności obiektu
299
8.4. Tworzenie klasy pochodnej
301
8.5. Przeciążanie metod
303
8.6. Weryfikacja i modyfikowanie wartości atrybutów
305
8.7. Definiowanie wirtualnych atrybutów
307
8.8. Delegowanie wywołań metod do innego obiektu
308
8.9. Konwersja i koercja typów obiektów
311
8.10. Prezentowanie obiektu w postaci czytelnej dla człowieka
315
8.11. Metody wywoływane ze zmienną liczbą argumentów
317
8.12. Symulowanie argumentów zawierających słowa kluczowe
319
8.13. Wywoływanie metod superklasy
321
8 | Spis treści
8.14. Definiowanie metod abstrakcyjnych
323
8.15. Zamrażanie obiektów w celu ich ochrony przed modyfikacją
325
8.16. Tworzenie kopii obiektu
327
8.17. Deklarowanie stałych
330
8.18. Implementowanie metod klasowych i metod-singletonów
332
8.19. Kontrolowanie dostępu — metody prywatne, publiczne i chronione
334
9. Moduły i przestrzenie nazw .......................................................................................339
9.1. Symulowanie wielokrotnego dziedziczenia za pomocą modułów-domieszek
339
9.2. Rozszerzanie wybranych obiektów za pomocą modułów
343
9.3. Rozszerzanie repertuaru metod klasowych za pomocą modułów
345
9.4. Moduł Enumerable — zaimplementuj jedną metodę, dostaniesz 22 za darmo
346
9.5. Unikanie kolizji nazw dzięki ich kwalifikowaniu
348
9.6. Automatyczne ładowanie bibliotek na żądanie
350
9.7. Importowanie przestrzeni nazw
352
9.8. Inicjowanie zmiennych instancyjnych dołączanego modułu
353
9.9. Automatyczne inicjowanie modułów-domieszek
354
10. Odzwierciedlenia i metaprogramowanie ................................................................. 357
10.1. Identyfikacja klasy obiektu i jej superklasy
358
10.2. Zestaw metod obiektu
359
10.3. Lista metod unikalnych dla obiektu
363
10.4. Uzyskiwanie referencji do metody
364
10.5. Poprawianie błędów w „obcych” klasach
366
10.6. Śledzenie zmian dokonywanych w danej klasie
368
10.7. Weryfikacja atrybutów obiektu
370
10.8. Reagowanie na wywołania niezdefiniowanych metod
372
10.9. Automatyczne inicjowanie zmiennych instancyjnych
375
10.10. Oszczędne kodowanie dzięki metaprogramowaniu
377
10.11. Metaprogramowanie z użyciem ewaluacji łańcuchów
380
10.12. Ewaluacja kodu we wcześniejszym kontekście
382
10.13. Anulowanie definicji metody
383
10.14. Aliasowanie metod
386
10.15. Programowanie zorientowane aspektowo
389
10.16. Wywołania kontraktowane
391
11.
XML i HTML .................................................................................................................395
11.1. Sprawdzanie poprawności dokumentu XML
396
11.2. Ekstrakcja informacji z drzewa dokumentu
398
Spis treści | 9
Zgłoś jeśli naruszono regulamin