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