Ruby - wbudowane funkcje
Ponieważ moduł Kernel jest zawarty w klasie Object , jego metody są dostępne wszędzie w programie Ruby. Można je wywołać bez odbiornika (forma funkcjonalna). Dlatego często nazywa się je funkcjami.
Sr.No. | Metody i opis |
---|---|
1 | abort Kończy program. Jeśli zostanie zgłoszony wyjątek (tj. $! Nie jest zerowe), zostanie wyświetlony jego komunikat o błędzie. |
2 | Array( obj) Zwraca obj po przekonwertowaniu go na tablicę przy użyciu to_ary lub to_a. |
3 | at_exit {...} Rejestruje blok do wykonania po zakończeniu programu. Podobna do instrukcji END, ale instrukcja END rejestruje blok tylko raz. |
4 | autoload( classname, file) Rejestruje nazwę klasy, która ma być załadowana z pliku przy jej pierwszym użyciu. nazwa klasy może być ciągiem znaków lub symbolem. |
5 | binding Zwraca bieżące powiązania zmiennych i metod. Wiążącą obiekt, który jest zwracany mogą być przekazane do eval metody jako drugi argument. |
6 | block_given? Zwraca wartość true, jeśli metoda została wywołana z blokiem . |
7 | callcc {| c|...} Przekazuje obiekt Continuation c do bloku i wykonuje blok. callcc może służyć do globalnego wyjścia lub konstrukcji pętli. |
8 | caller([ n]) Zwraca bieżący stos wykonywania w tablicy ciągów w postaci plik: linia . Jeśli podano n, zwraca wpisy stosu od n-tego poziomu w dół. |
9 | catch( tag) {...} Łapie nielokalne wyjście przez rzut wywołany podczas wykonywania jego bloku. |
10 | chomp([ rs = $/]) Zwraca wartość zmiennej $_ with the ending newline removed, assigning the result back to $_. Wartość ciągu nowego wiersza można określić za pomocą rs. |
11 | chomp!([ rs = $/]) Usuwa znak nowej linii z $ _, modyfikując ciąg w miejscu. |
12 | chop Zwraca wartość $_ with its last character (one byte) removed, assigning the result back to $_. |
13 | chop! Usuwa ostatni znak z $ _, modyfikując ciąg w miejscu. |
14 | eval( str[, scope[, file, line]]) Wykonuje str jako kod Ruby. Wiązanie, w jakim dokonywana jest ocena, może być określane z zakresem . Nazwę pliku i numer wiersza kodu, który ma zostać skompilowany, można określić za pomocą pliku i wiersza. |
15 | exec( cmd[, arg...]) Zastępuje bieżący proces, uruchamiając polecenie cmd . Jeśli podano wiele argumentów, polecenie jest wykonywane bez interpretacji powłoki. |
16 | exit([ result = 0]) Wychodzi z programu, zwracając wynik jako kod statusu. |
17 | exit!([ result = 0]) Zabija program pomijając obsługę wyjścia, taką jak zapewnianie itp. |
18 | fail(...) Zobacz podbicie (...) |
19 | Float( obj) Zwraca obj po przekonwertowaniu go na liczbę zmiennoprzecinkową. Obiekty liczbowe są konwertowane bezpośrednio; zero jest konwertowane na 0,0; łańcuchy są konwertowane z uwzględnieniem przedrostka podstawy 0x, 0b. Reszta jest konwertowana za pomocą obj.to_f. |
20 | fork fork {...} Tworzy proces potomny. W procesie potomnym zwracane jest zero, aw procesie nadrzędnym zwracany jest identyfikator procesu potomnego (liczba całkowita). Jeśli określono blok, jest uruchamiany w procesie potomnym. |
21 | format( fmt[, arg...]) Zobacz sprintf. |
22 | gets([ rs = $/]) Odczytuje nazwę pliku określoną w wierszu poleceń lub w jednym wierszu ze standardowego wejścia. Łańcuch separatora rekordów można określić jawnie za pomocą rs. |
23 | global_variables Zwraca tablicę globalnych nazw zmiennych. |
24 | gsub( x, y) gsub( x) {...} Zastępuje wszystkie ciągi pasujące do x in $_ with y. If a block is specified, matched strings are replaced with the result of the block. The modified result is assigned to $_. |
25 | gsub!( x, y) gsub!( x) {...} Wykonuje to samo podstawianie co gsub, z wyjątkiem tego, że łańcuch jest zmieniany w miejscu. |
26 | Integer( obj) Zwraca obj po konwersji na liczbę całkowitą. Obiekty liczbowe są konwertowane bezpośrednio; zero jest zamieniane na 0; łańcuchy są konwertowane z uwzględnieniem przedrostka podstawy 0x, 0b. Reszta jest konwertowana za pomocą obj.to_i. |
27 | lambda {| x|...} proc {| x|...} lambda proc Konwertuje blok na obiekt Proc . Jeśli nie określono żadnego bloku, konwertowany jest blok skojarzony z metodą wywołującą. |
28 | load( file[, private = false]) Wczytuje program Ruby z pliku . W przeciwieństwie do require , nie ładuje bibliotek rozszerzeń. Jeśli private ma wartość true , program jest ładowany do anonimowego modułu, chroniąc w ten sposób przestrzeń nazw programu wywołującego. |
29 | local_variables Zwraca tablicę nazw zmiennych lokalnych. |
30 | loop {...} Powtarza blok kodu. |
31 | open( path[, mode = "r"]) open( path[, mode = "r"]) {| f|...} Otwiera plik . Jeśli określono blok, jest on wykonywany z otwartym strumieniem przekazanym jako argument. Plik jest zamykany automatycznie po zamknięciu bloku. Jeśli ścieżka zaczyna się od potoku |, następujący ciąg jest uruchamiany jako polecenie i zwracany jest strumień powiązany z tym procesem. |
32 | p( obj) Wyświetla obj przy użyciu metody inspect (często używanej do debugowania). |
33 | print([ arg...]) Wyświetla argument do $ defout . Jeśli nie podano argumentów, wypisywana jest wartość $ _. |
34 | printf( fmt[, arg...]) Formatuje argument zgodnie z fmt używając sprintf i wypisuje wynik do $ defout . Szczegółowe informacje na temat specyfikacji formatowania można znaleźć w sprintf. |
35 | proc {| x|...} proc Zobacz lamda. |
36 | putc( c) Drukuje jeden znak na domyślne wyjście ( $ defout ). |
37 | puts([ str]) Wyświetla łańcuch na domyślne wyjście ( $ defout ). Jeśli ciąg nie kończy się znakiem nowej linii, do ciągu dołączana jest nowa linia. |
38 | raise(...) fail(...) Podnosi wyjątek. Zakłada RuntimeError, jeśli nie określono klasy wyjątku. Wywołanie podbicia bez argumentów w klauzuli ratunkowej ponownie podnosi wyjątek. Wykonywanie tego poza klauzulą ratunkową wywołuje błąd RuntimeError bez komunikatów .fail to przestarzała nazwa podwyżki. |
39 | rand([ max = 0]) Generuje liczbę pseudolosową większą lub równą 0 i mniejszą niż maks. Jeśli wartość max nie jest określona lub jest ustawiona na 0, liczba losowa jest zwracana jako liczba zmiennoprzecinkowa większa lub równa 0 i mniejsza niż 1. srand może zostać użyty do zainicjowania pseudolosowego strumienia. |
40 | readline([ rs = $/]) Równoważne z pobieraniem, z wyjątkiem wywołania wyjątku EOFError podczas odczytu EOF. |
41 | readlines([ rs = $/]) Zwraca tablicę ciągów zawierających nazwy plików określone jako argumenty wiersza polecenia lub zawartość standardowego wejścia. |
42 | require( lib) Ładuje bibliotekę (w tym biblioteki rozszerzeń) lib podczas jej pierwszego wywołania. require nie załaduje tej samej biblioteki więcej niż raz. Jeśli żadne rozszerzenie nie jest określone w lib , require próbuje dodać do niego .rb, .so itp. |
43 | scan( re) scan( re) {|x|...} Odpowiednik $ _. Skanowania. |
44 | select( reads[, writes = nil[, excepts = nil[, timeout = nil]]]) Sprawdza zmiany stanu trzech typów danych wejściowych, wyjściowych i wyjątków obiektów we / wy, które są przekazywane jako tablice obiektów we / wy. W przypadku argumentów, które nie wymagają sprawdzania, przekazywane jest zero . Zwracana jest trzyelementowa tablica zawierająca tablice obiektów IO, dla których nastąpiły zmiany stanu. zero jest zwracane po przekroczeniu limitu czasu. |
45 | set_trace_func( proc) Ustawia program obsługi do śledzenia. proc może być łańcuchem lub obiektem proc . set_trace_func jest używany przez debugger i profiler. |
46 | sleep([ sec]) Zawiesza wykonywanie programu na sekundę. Jeśli nie określono sec, program zostaje zawieszony na zawsze. |
47 | split([ sep[, max]]) Odpowiednik podziału _. $. |
48 | sprintf( fmt[, arg...]) format( fmt[, arg...]) Zwraca ciąg, w którym argument jest sformatowany zgodnie z fmt. Specyfikacje formatowania są zasadniczo takie same, jak dla sprintf w języku programowania C. Specyfikatory konwersji (%, po którym następuje specyfikator pola konwersji) w fmt są zastępowane sformatowanym ciągiem odpowiedniego argumentu. Lista zgłoszonych konwersji znajduje się poniżej w następnej sekcji. |
49 | srand([ seed]) Inicjuje tablicę liczb losowych. Jeśli ziarno nie jest określone, inicjalizacja jest wykonywana przy użyciu czasu i innych informacji systemowych dla nasion. |
50 | String( obj) Zwraca obj po przekonwertowaniu go na łańcuch przy użyciu obj.to_s. |
51 | syscall( sys[, arg...]) Wywołuje funkcję wywołania systemu operacyjnego określoną przez number sys . Liczby i znaczenie sys jest zależne od systemu. |
52 | system( cmd[, arg...]) Wykonuje cmd jako wywołanie wiersza poleceń. Jeśli określono wiele argumentów, polecenie jest uruchamiane bezpośrednio, bez rozwinięcia powłoki. Zwraca prawdę, jeśli stan powrotu to 0 (sukces). |
53 | sub( x, y) sub( x) {...} Zastępuje pierwszy ciąg odpowiadający x w $ _ przez y. Jeśli określono blok, dopasowane ciągi są zastępowane wynikiem bloku. Zmodyfikowany wynik jest przypisywany do $ _. |
54 | sub!( x, y) sub!( x) {...} Wykonuje tę samą zamianę co sub, z tą różnicą, że łańcuch jest zmieniany w miejscu. |
55 | test( test, f1[, f2]) Wykonuje różne testy plików określone przez test znaków . Aby poprawić czytelność, należy raczej używać metod klasy File (na przykład File :: readable?) Niż tej funkcji. Lista argumentów jest podana poniżej w następnej sekcji. |
56 | throw( tag[, value = nil]) Przechodzi do funkcji catch oczekującej ze znacznikiem symbolu lub łańcucha . wartość jest wartością zwracaną, która ma być używana przez catch . |
57 | trace_var( var, cmd) trace_var( var) {...} Ustawia śledzenie zmiennej globalnej. Nazwa zmiennej jest określona jako symbol. cmd może być łańcuchem lub obiektem Proc. |
58 | trap( sig, cmd) trap( sig) {...} Ustawia obsługę sygnału. sig może być łańcuchem (jak SIGUSR1) lub liczbą całkowitą. SIG można pominąć w nazwie sygnału. Procedura obsługi sygnału dla sygnału EXIT lub sygnału o numerze 0 jest wywoływana tuż przed zakończeniem procesu. |
59 | untrace_var( var[, cmd]) Usuwa śledzenie zmiennej globalnej. Jeśli określono cmd , usuwane jest tylko to polecenie. |
Funkcje dla liczb
Oto lista wbudowanych funkcji związanych z liczbą. Powinny być używane w następujący sposób -
#!/usr/bin/ruby
num = 12.40
puts num.floor # 12
puts num + 10 # 22.40
puts num.integer? # false as num is a float.
To da następujący wynik -
12
22.4
false
Sr.No. | Metody i opis |
---|---|
1 | n + num n - num n * num n / num Wykonuje operacje arytmetyczne: dodawanie, odejmowanie, mnożenie i dzielenie. |
2 | n % num Zwraca moduł n. |
3 | n ** num Potęgowanie. |
4 | n.abs Zwraca wartość bezwzględną n. |
5 | n.ceil Zwraca najmniejszą liczbę całkowitą większą lub równą n. |
6 | n.coerce( num) Zwraca tablicę zawierającą liczby i n, które są prawdopodobnie przekonwertowane na typ, który umożliwia ich wzajemne działanie. Używany w automatycznej konwersji typów w operatorach numerycznych. |
7 | n.divmod( num) Zwraca tablicę zawierającą iloraz i moduł z podzielenia n przez liczbę. |
8 | n.floor Zwraca największą liczbę całkowitą mniejszą lub równą n. |
9 | n.integer? Zwraca prawdę, jeśli n jest liczbą całkowitą. |
10 | n.modulo( num) Zwraca moduł uzyskany przez podzielenie n przez liczbę i zaokrąglenie ilorazu do podłogi |
11 | n.nonzero? Zwraca n, jeśli nie jest zerem, w przeciwnym razie nil. |
12 | n.remainder( num) Zwraca resztę uzyskaną przez podzielenie n przez numi usuwanie ułamków dziesiętnych z ilorazu. Plikresult i n zawsze mają ten sam znak. |
13 | n.round Zwraca n zaokrąglone do najbliższej liczby całkowitej. |
14 | n.truncate Zwraca n jako liczbę całkowitą z usuniętymi miejscami dziesiętnymi. |
15 | n.zero? Zwraca zero, jeśli n wynosi 0. |
16 | n & num n | num n ^ num Operacje bitowe: AND, OR, XOR i inwersja. |
17 | n << num n >> num Przesunięcie bitowe w lewo i przesunięcie w prawo. |
18 | n[num] Zwraca wartość numbit z najmniej znaczącego bitu, którym jest n [0]. |
19 | n.chr Zwraca ciąg zawierający znak kodu znaku n. |
20 | n.next n.succ Zwraca następną liczbę całkowitą po n. Odpowiednik n + 1. |
21 | n.size Zwraca liczbę bajtów w reprezentacji maszynowej n. |
22 | n.step( upto, step) {|n| ...} Iteruje blok z n do upto, zwiększając o step za każdym razem. |
23 | n.times {|n| ...} Iteruje blok n czasy. |
24 | n.to_f Konwertuje nna liczbę zmiennoprzecinkową. Konwersja zmiennoprzecinkowa może spowodować utratę dokładnych informacji. |
25 | n.to_int Zwroty n po przeliczeniu na liczbę pośrednią. |
Funkcje dla Float
Sr.No. | Metody i opis |
---|---|
1 | Float::induced_from(num) Zwraca wynik konwersji num na liczbę zmiennoprzecinkową. |
2 | f.finite? Zwraca prawdę, jeśli f nie jest nieskończone i f.nan jest fałszem. |
3 | f.infinite? Zwraca 1, jeśli f jest dodatnią nieskończonością, -1 jeśli jest ujemną nieskończonością, lub nil, jeśli cokolwiek innego. |
4 | f.nan? Zwraca prawdę, jeśli f nie jest prawidłową liczbą zmiennoprzecinkową IEEE. |
Funkcje matematyczne
Sr.No. | Metody i opis |
---|---|
1 | atan2( x, y) Oblicza styczną łuku. |
2 | cos( x) Oblicza cosinus x. |
3 | exp( x) Oblicza funkcję wykładniczą (e podniesione do potęgi x). |
4 | frexp( x) Zwraca dwuelementową tablicę zawierającą nominalizowany ułamek i wykładnik x. |
5 | ldexp( x, exp) Zwraca wartość x razy 2 do potęgi exp. |
6 | log( x) Oblicza logarytm naturalny z x. |
7 | log10( x) Oblicza logarytm dziesiętny z x. |
8 | sin( x) Oblicza sinus z x. |
9 | sqrt( x) Zwraca pierwiastek kwadratowy z x. x musi być dodatnia. |
10 | tan( x) Oblicza tangens x. |
Specyfikator pola konwersji
Funkcja sprintf (fmt [, arg ...]) i format (fmt [, arg ...]) zwraca łańcuch, w którym argument jest sformatowany zgodnie z fmt. Specyfikacje formatowania są zasadniczo takie same, jak dla sprintf w języku programowania C. Specyfikatory konwersji (%, po którym następuje specyfikator pola konwersji) w fmt są zastępowane sformatowanym ciągiem odpowiedniego argumentu.
Sr.No. | Specyfikator i opis |
---|---|
1 | b Binarna liczba całkowita |
2 | c Pojedynczy znak |
3 | d,i Liczba całkowita dziesiętna |
4 | e Notacja wykładnicza (np. 2.44e6) |
5 | E Notacja wykładnicza (np. 2.44E6) |
6 | f Liczba zmiennoprzecinkowa (np. 2,44) |
7 | g użyj% e, jeśli wykładnik jest mniejszy niż -4, w przeciwnym razie% f |
8 | G użyj% E, jeśli wykładnik jest mniejszy niż -4, w przeciwnym razie% f |
9 | o Ósemkowa liczba całkowita |
10 | s Ciąg lub dowolny obiekt przekonwertowany za pomocą to_s |
11 | u Liczba całkowita dziesiętna bez znaku |
12. | x Liczba szesnastkowa całkowita (np. 39ff) |
13 | X Szesnastkowa liczba całkowita (np. 39FF) |
Poniżej znajduje się przykład użycia -
#!/usr/bin/ruby
str = sprintf("%s\n", "abc") # => "abc\n" (simplest form)
puts str
str = sprintf("d=%d", 42) # => "d=42" (decimal output)
puts str
str = sprintf("%04x", 255) # => "00ff" (width 4, zero padded)
puts str
str = sprintf("%8s", "hello") # => " hello" (space padded)
puts str
str = sprintf("%.2s", "hello") # => "he" (trimmed by precision)
puts str
To da następujący wynik -
abc
d = 42
00ff
hello
he
Testuj argumenty funkcji
Test funkcji (test, f1 [, f2]) wykonuje jeden z następujących testów plików określonych przez test znaków . Aby poprawić czytelność, zamiast tej funkcji należy używać metod klasy File (na przykład File :: readable?).
Sr.No. | Argument i opis |
---|---|
1 | ?r Czy wartość f1 jest czytelna dla efektywnego UID dzwoniącego? |
2 | ?w Czy f1 jest zapisywalny przez efektywny UID dzwoniącego? |
3 | ?x Czy f1 jest wykonywalne przez efektywny identyfikator wywołującego? |
4 | ?o Czy f1 jest własnością efektywnego UID dzwoniącego? |
5 | ?R Czy f1 jest czytelne dla rzeczywistego UID dzwoniącego? |
6 | ?W Czy rzeczywisty uid wywołującego ma możliwość zapisu na f1? |
7 | ?X Czy f1 jest wykonywalne przez rzeczywisty identyfikator użytkownika wywołującego? |
8 | ?O Czy f1 jest własnością prawdziwego UID dzwoniącego? |
9 | ?e Czy f1 istnieje? |
10 | ?z Czy f1 ma zerową długość? |
11 | ?s Rozmiar pliku f1 (zerowy, jeśli 0) |
12 | ?f Czy f1 to zwykły plik? |
13 | ?d Czy f1 to katalog? |
14 | ?l Czy f1 jest dowiązaniem symbolicznym? |
15 | ?p Czy f1 to nazwany potok (FIFO)? |
16 | ?S Czy F1 to gniazdo? |
17 | ?b Czy F1 jest urządzeniem blokowym? |
18 | ?c Czy F1 to urządzenie znakowe? |
19 | ?u Czy f1 ma ustawiony bit setuid? |
20 | ?g Czy f1 ma ustawiony bit setgid? |
21 | ?k Czy f1 ma ustawiony bit lepki? |
22 | ?M Czas ostatniej modyfikacji dla f1. |
23 | ?A Czas ostatniego dostępu dla f1. |
24 | ?C Czas zmiany ostatniego i-węzła dla f1. |
Sr.No. | Argument i opis |
---|---|
1 | ?= Czy czasy modyfikacji f1 i f2 są równe? |
2 | ?> Czy czas modyfikacji f1 jest nowszy niż f2? |
3 | ?< Czy czas modyfikacji f1 jest starszy niż f2? |
4 | ?- Czy f1 jest twardym połączeniem z f2? |
Poniżej znajduje się przykład użycia. Zakładając, że main.rb istnieje z uprawnieniami do odczytu, zapisu i nie wykonywania -
#!/usr/bin/ruby
puts test(?r, "main.rb" ) # => true
puts test(?w, "main.rb" ) # => true
puts test(?x, "main.rb" ) # => false
To da następujący wynik -
true
false
false