Ruby - Funzioni integrate

Poiché il modulo Kernel è incluso dalla classe Object , i suoi metodi sono disponibili ovunque nel programma Ruby. Possono essere chiamati senza ricevitore (modulo funzionale). Pertanto, sono spesso chiamate funzioni.

Sr.No. Metodi e descrizione
1

abort

Termina il programma. Se viene sollevata un'eccezione (cioè $! Non è nullo), viene visualizzato il suo messaggio di errore.

2

Array( obj)

Restituisce obj dopo averlo convertito in un array utilizzando to_ary o to_a.

3

at_exit {...}

Registra un blocco per l'esecuzione quando il programma esce. Simile all'istruzione END, ma l'istruzione END registra il blocco solo una volta.

4

autoload( classname, file)

Registra un nome classe di classe da caricare dal file la prima volta che viene utilizzato. classname può essere una stringa o un simbolo.

5

binding

Restituisce la variabile corrente e le associazioni del metodo. L' oggetto Binding restituito può essere passato al metodo eval come secondo argomento.

6

block_given?

Restituisce vero se il metodo è stato chiamato con un blocco .

7

callcc {| c|...}

Passa un oggetto Continuation c al blocco ed esegue il blocco. callcc può essere utilizzato per l'uscita globale o per la costruzione del ciclo.

8

caller([ n])

Restituisce lo stack di esecuzione corrente in un array di stringhe nel file del modulo : riga . Se viene specificato n, restituisce le voci dello stack dall'ennesimo livello in giù.

9

catch( tag) {...}

Cattura un'uscita non locale con un lancio chiamato durante l'esecuzione del suo blocco.

10

chomp([ rs = $/])

Restituisce il valore della variabile $_ with the ending newline removed, assigning the result back to $_. Il valore della stringa di nuova riga può essere specificato con rs.

11

chomp!([ rs = $/])

Rimuove la nuova riga da $ _, modificando la stringa in posizione.

12

chop

Restituisce il valore di $_ with its last character (one byte) removed, assigning the result back to $_.

13

chop!

Rimuove l'ultimo carattere da $ _, modificando la stringa in posizione.

14

eval( str[, scope[, file, line]])

Esegue str come codice Ruby. Il vincolo in cui eseguire la valutazione può essere specificato con scopo . Il nome del file e il numero di riga del codice da compilare possono essere specificati utilizzando file e riga.

15

exec( cmd[, arg...])

Sostituisce il processo corrente eseguendo il comando cmd . Se vengono specificati più argomenti, il comando viene eseguito senza espansione della shell.

16

exit([ result = 0])

Esce dal programma, restituendo il risultato come codice di stato.

17

exit!([ result = 0])

Uccide il programma ignorando la gestione delle uscite come garantire , ecc.

18

fail(...)

Vedi raise (...)

19

Float( obj)

Restituisce obj dopo averlo convertito in un float. Gli oggetti numerici vengono convertiti direttamente; nil viene convertito in 0,0; le stringhe vengono convertite considerando 0x, 0b radix prefix. Il resto viene convertito utilizzando obj.to_f.

20

fork

fork {...}

Crea un processo figlio. nil viene restituito nel processo figlio e l'ID (intero) del processo figlio viene restituito nel processo genitore. Se viene specificato un blocco, viene eseguito nel processo figlio.

21

format( fmt[, arg...])

Vedi sprintf.

22

gets([ rs = $/])

Legge il nome del file specificato nella riga di comando o una riga dallo standard input. La stringa del separatore di record può essere specificata esplicitamente con rs.

23

global_variables

Restituisce un array di nomi di variabili globali.

24

gsub( x, y)

gsub( x) {...}

Sostituisce tutte le stringhe che corrispondono a 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) {...}

Esegue la stessa sostituzione di gsub, tranne per il fatto che la stringa viene modificata in posizione.

26

Integer( obj)

Restituisce obj dopo averlo convertito in un numero intero. Gli oggetti numerici vengono convertiti direttamente; nil viene convertito in 0; le stringhe vengono convertite considerando 0x, 0b radix prefix. Il resto viene convertito utilizzando obj.to_i.

27

lambda {| x|...}

proc {| x|...}

lambda

proc

Converte un blocco in un oggetto Proc . Se non viene specificato alcun blocco, viene convertito il blocco associato al metodo chiamante.

28

load( file[, private = false])

Carica un programma Ruby da file . A differenza di require , non carica le librerie di estensioni. Se private è vero , il programma viene caricato in un modulo anonimo, proteggendo così lo spazio dei nomi del programma chiamante.

29

local_variables

Restituisce un array di nomi di variabili locali.

30

loop {...}

Ripete un blocco di codice.

31

open( path[, mode = "r"])

open( path[, mode = "r"]) {| f|...}

Apre un file . Se viene specificato un blocco, il blocco viene eseguito con il flusso aperto passato come argomento. Il file viene chiuso automaticamente quando il blocco esce. Se il percorso inizia con una barra verticale |, la stringa seguente viene eseguita come comando e viene restituito il flusso associato a quel processo.

32

p( obj)

Visualizza obj usando il suo metodo inspect (spesso usato per il debug).

33

print([ arg...])

Stampa arg su $ defout . Se non vengono specificati argomenti, viene stampato il valore di $ _.

34

printf( fmt[, arg...])

Formatta arg secondo fmt usando sprintf e stampa il risultato in $ defout . Per le specifiche di formattazione, vedere sprintf per i dettagli.

35

proc {| x|...}

proc

Vedi lamda.

36

putc( c)

Stampa un carattere nell'output predefinito ( $ defout ).

37

puts([ str])

Stampa la stringa nell'output predefinito ( $ defout ). Se la stringa non termina con una nuova riga, alla stringa viene aggiunta una nuova riga.

38

raise(...)

fail(...)

Solleva un'eccezione. Presume RuntimeError se non viene specificata alcuna classe di eccezione. La chiamata a raise senza argomenti in una clausola di salvataggio solleva nuovamente l'eccezione. Farlo al di fuori di una clausola di salvataggio solleva un'eccezione RuntimeError senza messaggi .fail è un nome obsoleto per raise.

39

rand([ max = 0])

Genera un numero pseudocasuale maggiore o uguale a 0 e minore di max. Se max non è specificato o è impostato su 0, viene restituito un numero casuale come numero in virgola mobile maggiore o uguale a 0 e minore di 1. srand può essere utilizzato per inizializzare il flusso pseudo-casuale.

40

readline([ rs = $/])

Equivale a gets tranne che solleva un'eccezione EOFError alla lettura di EOF.

41

readlines([ rs = $/])

Restituisce un array di stringhe che contengono i nomi di file specificati come argomenti della riga di comando o il contenuto dell'input standard.

42

require( lib)

Carica la libreria (comprese le librerie di estensione) lib quando viene chiamata per la prima volta. require non caricherà la stessa libreria più di una volta. Se nessuna estensione è specificata in lib , require prova ad aggiungere .rb, .so, ecc.

43

scan( re)

scan( re) {|x|...}

Equivalente a $ _. Scan.

44

select( reads[, writes = nil[, excepts = nil[, timeout = nil]]])

Controlla i cambiamenti nello stato di tre tipi di input, output ed eccezioni di oggetti I / O che vengono passati come array di oggetti I / O. nil viene passato per argomenti che non necessitano di controllo. Viene restituito un array a tre elementi contenente gli array degli oggetti IO per i quali sono state apportate modifiche allo stato. nil viene restituito al timeout.

45

set_trace_func( proc)

Imposta un gestore per la traccia. proc può essere una stringa o un oggetto proc . set_trace_func viene utilizzato dal debugger e dal profiler.

46

sleep([ sec])

Sospende l'esecuzione del programma per secondi secondi. Se sec non è specificato, il programma viene sospeso per sempre.

47

split([ sep[, max]])

Equivalente a $ _. Split.

48

sprintf( fmt[, arg...])

format( fmt[, arg...])

Restituisce una stringa in cui arg è formattato in base a fmt. Le specifiche di formattazione sono essenzialmente le stesse di sprintf nel linguaggio di programmazione C. Gli specificatori di conversione (% seguito dall'identificatore del campo di conversione) in fmt vengono sostituiti dalla stringa formattata dell'argomento corrispondente. Un elenco delle conversioni archiviate è fornito di seguito nella sezione successiva.

49

srand([ seed])

Inizializza un array di numeri casuali. Se il seme non è specificato, l'inizializzazione viene eseguita utilizzando l'ora e altre informazioni di sistema per il seme.

50

String( obj)

Restituisce obj dopo averlo convertito in una stringa utilizzando obj.to_s.

51

syscall( sys[, arg...])

Chiama una funzione di chiamata del sistema operativo specificata da number sys . I numeri e il significato di sys dipendono dal sistema.

52

system( cmd[, arg...])

Esegue cmd come una chiamata alla riga di comando. Se vengono specificati più argomenti, il comando viene eseguito direttamente senza espansione della shell. Restituisce vero se lo stato di ritorno è 0 (successo).

53

sub( x, y)

sub( x) {...}

Sostituisce la prima stringa che corrisponde a x in $ _ con y. Se viene specificato un blocco, le stringhe corrispondenti vengono sostituite con il risultato del blocco. Il risultato modificato viene assegnato a $ _.

54

sub!( x, y)

sub!( x) {...}

Esegue la stessa sostituzione del sub, tranne che la stringa viene cambiata in posizione.

55

test( test, f1[, f2])

Esegue vari test di file specificati dal carattere di prova . Per migliorare la leggibilità, dovresti usare i metodi della classe File (ad esempio File :: readable?) Piuttosto che questa funzione. Un elenco di argomenti è fornito di seguito nella sezione successiva.

56

throw( tag[, value = nil])

Salta alla funzione di cattura in attesa con il simbolo o il tag stringa . value è il valore restituito da utilizzare da catch .

57

trace_var( var, cmd)

trace_var( var) {...}

Imposta la traccia per una variabile globale. Il nome della variabile è specificato come un simbolo. cmd può essere una stringa o un oggetto Proc.

58

trap( sig, cmd)

trap( sig) {...}

Imposta un gestore del segnale. sig può essere una stringa (come SIGUSR1) o un numero intero. SIG può essere omesso dal nome del segnale. Il gestore del segnale per il segnale EXIT o il segnale numero 0 viene richiamato appena prima della conclusione del processo.

59

untrace_var( var[, cmd])

Rimuove la traccia per una variabile globale. Se viene specificato cmd , viene rimosso solo quel comando.

Funzioni per i numeri

Ecco un elenco di funzioni integrate relative al numero. Dovrebbero essere usati come segue:

#!/usr/bin/ruby

num = 12.40
puts num.floor      # 12
puts num + 10       # 22.40
puts num.integer?   # false  as num is a float.

Questo produrrà il seguente risultato:

12
22.4
false
Sr.No. Metodi e descrizione
1

n + num

n - num

n * num

n / num

Esegue operazioni aritmetiche: addizione, sottrazione, moltiplicazione e divisione.

2

n % num

Restituisce il modulo di n.

3

n ** num

Esponenziazione.

4

n.abs

Restituisce il valore assoluto di n.

5

n.ceil

Restituisce il numero intero più piccolo maggiore o uguale a n.

6

n.coerce( num)

Restituisce un array contenente num e n entrambi eventualmente convertiti in un tipo che consente di utilizzarli reciprocamente. Utilizzato nella conversione automatica del tipo negli operatori numerici.

7

n.divmod( num)

Restituisce un array contenente il quoziente e il modulo dalla divisione n per num.

8

n.floor

Restituisce il numero intero più grande minore o uguale a n.

9

n.integer?

Restituisce vero se n è un numero intero.

10

n.modulo( num)

Restituisce il modulo ottenuto dividendo n per num e arrotondando il quoziente con floor

11

n.nonzero?

Restituisce n se non è zero, altrimenti nullo.

12

n.remainder( num)

Restituisce il resto ottenuto dividendo n di nume rimuovendo i decimali dal quoziente. Ilresult e n hanno sempre lo stesso segno.

13

n.round

Restituisce n arrotondato al numero intero più vicino.

14

n.truncate

Restituisce n come numero intero senza i decimali.

15

n.zero?

Restituisce zero se n è 0.

16

n & num

n | num

n ^ num

Operazioni bit per bit: AND, OR, XOR e inversione.

17

n << num

n >> num

Spostamento a sinistra bit per bit e spostamento a destra.

18

n[num]

Restituisce il valore di numesimo bit dal bit meno significativo, che è n [0].

19

n.chr

Restituisce una stringa contenente il carattere per il codice carattere n.

20

n.next

n.succ

Restituisce il numero intero successivo che segue n. Equivalente a n + 1.

21

n.size

Restituisce il numero di byte nella rappresentazione della macchina di n.

22

n.step( upto, step) {|n| ...}

Itera il blocco da n per upto, incrementando di step ogni volta.

23

n.times {|n| ...}

Ripete il blocco n volte.

24

n.to_f

Converte nin un numero in virgola mobile. La conversione in virgola mobile potrebbe perdere le informazioni sulla precisione.

25

n.to_int

ritorna n dopo la conversione in numero interger.

Funzioni per Float

Sr.No. Metodi e descrizione
1

Float::induced_from(num)

Restituisce il risultato della conversione di num in un numero a virgola mobile.

2

f.finite?

Restituisce vero se f non è infinito e f.nan è falso.

3

f.infinite?

Restituisce 1 se f è infinito positivo, -1 se infinito negativo o zero se non altro.

4

f.nan?

Restituisce vero se f non è un numero in virgola mobile IEEE valido.

Funzioni per la matematica

Sr.No. Metodi e descrizione
1

atan2( x, y)

Calcola l'arco tangente.

2

cos( x)

Calcola il coseno di x.

3

exp( x)

Calcola una funzione esponenziale (e elevata alla potenza di x).

4

frexp( x)

Restituisce una matrice a due elementi contenente la frazione nominalizzata e l'esponente di x.

5

ldexp( x, exp)

Restituisce il valore di x moltiplicato per 2 alla potenza di exp.

6

log( x)

Calcola il logaritmo naturale di x.

7

log10( x)

Calcola il logaritmo in base 10 di x.

8

sin( x)

Calcola il seno di x.

9

sqrt( x)

Restituisce la radice quadrata di x. x deve essere positivo.

10

tan( x)

Calcola la tangente di x.

Identificatore del campo di conversione

La funzione sprintf (fmt [, arg ...]) e format (fmt [, arg ...]) restituisce una stringa in cui arg è formattato secondo fmt. Le specifiche di formattazione sono essenzialmente le stesse di sprintf nel linguaggio di programmazione C. Gli specificatori di conversione (% seguito dall'identificatore del campo di conversione) in fmt vengono sostituiti dalla stringa formattata dell'argomento corrispondente.

Sr.No. Specifier e descrizione
1

b

Numero intero binario

2

c

Singolo carattere

3

d,i

Numero intero decimale

4

e

Notazione esponenziale (ad esempio, 2.44e6)

5

E

Notazione esponenziale (ad esempio, 2.44E6)

6

f

Numero in virgola mobile (ad esempio, 2.44)

7

g

usa% e se l'esponente è minore di -4, altrimenti% f

8

G

usa% E se l'esponente è minore di -4, altrimenti% f

9

o

Numero intero ottale

10

s

String o qualsiasi oggetto convertito utilizzando to_s

11

u

Numero intero decimale senza segno

12.

x

Numero intero esadecimale (ad es. 39ff)

13

X

Numero intero esadecimale (ad es. 39FF)

Di seguito è riportato l'esempio di utilizzo:

#!/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

Questo produrrà il seguente risultato:

abc
d = 42
00ff
   hello
he

Argomenti della funzione di test

Il test di funzione (test, f1 [, f2]) esegue uno dei seguenti test di file specificati dal test dei caratteri . Per migliorare la leggibilità, dovresti usare i metodi della classe File (ad esempio, File :: readable?) Piuttosto che questa funzione.

Sr.No. Argomento e descrizione
1

?r

F1 è leggibile dall'uid effettivo del chiamante?

2

?w

F1 è scrivibile dall'uid effettivo del chiamante?

3

?x

F1 è eseguibile dall'uid effettivo del chiamante?

4

?o

F1 è di proprietà dell'uid effettivo del chiamante?

5

?R

F1 è leggibile dal vero uid del chiamante?

6

?W

F1 è scrivibile dal vero uid del chiamante?

7

?X

F1 è eseguibile dal vero uid del chiamante?

8

?O

F1 è di proprietà del vero uid del chiamante?

9

?e

Esiste f1?

10

?z

F1 ha lunghezza zero?

11

?s

Dimensione del file di f1 (zero se 0)

12

?f

F1 è un file normale?

13

?d

F1 è una directory?

14

?l

F1 è un collegamento simbolico?

15

?p

F1 è una named pipe (FIFO)?

16

?S

F1 è una presa?

17

?b

F1 è un dispositivo a blocchi?

18

?c

F1 è un dispositivo a caratteri?

19

?u

F1 ha il bit setuid impostato?

20

?g

F1 ha il bit setgid impostato?

21

?k

F1 ha il bit appiccicoso impostato?

22

?M

Ora ultima modifica per f1.

23

?A

Ultimo orario di accesso per f1.

24

?C

Ultimo tempo di cambio inode per f1.

Sr.No. Argomento e descrizione
1

?=

I tempi di modifica di f1 e f2 sono uguali?

2

?>

Il tempo di modifica di f1 è più recente di f2?

3

?<

Il tempo di modifica di f1 è più vecchio di f2?

4

?-

F1 è un collegamento fisso a f2?

Di seguito è riportato l'esempio di utilizzo. Supponendo che main.rb esista con permessi di lettura, scrittura e non esecuzione -

#!/usr/bin/ruby

puts test(?r, "main.rb" )   # => true
puts test(?w, "main.rb" )   # => true
puts test(?x, "main.rb" )   # => false

Questo produrrà il seguente risultato:

true
false
false