Ruby - funções integradas

Como o módulo Kernel é incluído pela classe Object , seus métodos estão disponíveis em qualquer lugar no programa Ruby. Eles podem ser chamados sem um receptor (forma funcional). Portanto, são freqüentemente chamados de funções.

Sr. Não. Métodos e Descrição
1

abort

Encerra o programa. Se uma exceção for levantada (ou seja, $! Não é nulo), sua mensagem de erro é exibida.

2

Array( obj)

Retorna obj após convertê-lo em um array usando to_ary ou to_a.

3

at_exit {...}

Registra um bloco para execução quando o programa termina. Semelhante à instrução END, mas a instrução END registra o bloco apenas uma vez.

4

autoload( classname, file)

Registra um nome de classe de classe a ser carregado do arquivo na primeira vez que é usado. classname pode ser uma string ou um símbolo.

5

binding

Retorna a variável atual e as ligações de método. O objeto Binding que é retornado pode ser passado para o método eval como seu segundo argumento.

6

block_given?

Retorna verdadeiro se o método foi chamado com um bloco .

7

callcc {| c|...}

Passa um objeto de continuação c para o bloco e executa o bloco. callcc pode ser usado para saída global ou construção de loop.

8

caller([ n])

Retorna a pilha de execução atual em uma matriz de strings no formato file: line . Se n for especificado, retorna as entradas da pilha do nível enésimo para baixo.

9

catch( tag) {...}

Pega uma saída não local por um lance chamado durante a execução de seu bloco.

10

chomp([ rs = $/])

Retorna o valor da variável $_ with the ending newline removed, assigning the result back to $_. O valor da string de nova linha pode ser especificado com rs.

11

chomp!([ rs = $/])

Remove a nova linha de $ _, modificando a string no lugar.

12

chop

Retorna o valor de $_ with its last character (one byte) removed, assigning the result back to $_.

13

chop!

Remove o último caractere de $ _, modificando a string no local.

14

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

Executa str como código Ruby. A ligação na qual realizar a avaliação pode ser especificada com escopo . O nome do arquivo e o número da linha do código a ser compilado podem ser especificados usando arquivo e linha.

15

exec( cmd[, arg...])

Substitui o processo atual executando o comando cmd . Se vários argumentos forem especificados, o comando será executado sem expansão de shell.

16

exit([ result = 0])

Sai do programa, resultando em código de status retornado.

17

exit!([ result = 0])

Mata o programa, ignorando o tratamento de saída, como garantir , etc.

18

fail(...)

Veja aumento (...)

19

Float( obj)

Retorna obj após convertê-lo em um float. Objetos numéricos são convertidos diretamente; nil é convertido em 0,0; strings são convertidas considerando o prefixo 0x, 0b radix. O resto é convertido usando obj.to_f.

20

fork

fork {...}

Cria um processo filho. nil é retornado no processo filho e o ID do processo filho (inteiro) é retornado no processo pai. Se um bloco for especificado, ele será executado no processo filho.

21

format( fmt[, arg...])

Veja sprintf.

22

gets([ rs = $/])

Lê o nome do arquivo especificado na linha de comando ou uma linha da entrada padrão. A string do separador de registro pode ser especificada explicitamente com rs.

23

global_variables

Retorna uma matriz de nomes de variáveis ​​globais.

24

gsub( x, y)

gsub( x) {...}

Substitui todas as strings correspondentes a x em $_ 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) {...}

Executa a mesma substituição que gsub, exceto que a string é alterada no lugar.

26

Integer( obj)

Retorna obj após convertê-lo em um inteiro. Objetos numéricos são convertidos diretamente; nil é convertido em 0; strings são convertidas considerando o prefixo 0x, 0b radix. O resto é convertido usando obj.to_i.

27

lambda {| x|...}

proc {| x|...}

lambda

proc

Converte um bloco em um objeto Proc . Se nenhum bloco for especificado, o bloco associado ao método de chamada é convertido.

28

load( file[, private = false])

Carrega um programa Ruby do arquivo . Ao contrário de require , ele não carrega bibliotecas de extensão. Se private for true , o programa é carregado em um módulo anônimo, protegendo assim o namespace do programa de chamada.

29

local_variables

Retorna uma matriz de nomes de variáveis ​​locais.

30

loop {...}

Repete um bloco de código.

31

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

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

Abre um arquivo . Se um bloco for especificado, o bloco será executado com o fluxo aberto passado como argumento. O arquivo é fechado automaticamente quando o bloco termina. Se o caminho começar com um tubo |, a sequência a seguir será executada como um comando e o fluxo associado a esse processo será retornado.

32

p( obj)

Exibe obj usando seu método inspect (frequentemente usado para depuração).

33

print([ arg...])

Imprime arg em $ defout . Se nenhum argumento for especificado, o valor de $ _ é impresso.

34

printf( fmt[, arg...])

Formata arg de acordo com fmt usando sprintf e imprime o resultado em $ defout . Para especificações de formatação, consulte sprintf para detalhes.

35

proc {| x|...}

proc

Veja lamda.

36

putc( c)

Imprime um caractere na saída padrão ( $ defout ).

37

puts([ str])

Imprime string na saída padrão ( $ defout ). Se a string não terminar com uma nova linha, uma nova linha será anexada à string.

38

raise(...)

fail(...)

Gera uma exceção. Assume RuntimeError se nenhuma classe de exceção for especificada. Chamar raise sem argumentos em uma cláusula de resgate levanta novamente a exceção. Fazer isso fora de uma cláusula de resgate gera um RuntimeError sem mensagem .fail é um nome obsoleto para aumento.

39

rand([ max = 0])

Gera um número pseudoaleatório maior ou igual a 0 e menor que max. Se max não for especificado ou for definido como 0, um número aleatório será retornado como um número de ponto flutuante maior ou igual a 0 e menor que 1. srand pode ser usado para inicializar o fluxo pseudo-aleatório.

40

readline([ rs = $/])

Equivalente a gets, exceto que gera uma exceção EOFError ao ler EOF.

41

readlines([ rs = $/])

Retorna uma matriz de strings contendo os nomes de arquivos especificados como argumentos de linha de comando ou o conteúdo da entrada padrão.

42

require( lib)

Carrega a biblioteca (incluindo bibliotecas de extensão) lib quando é chamada pela primeira vez. require não carregará a mesma biblioteca mais de uma vez. Se nenhuma extensão for especificada em lib , require tenta adicionar .rb, .so, etc., a ele.

43

scan( re)

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

Equivalente a $ _. Scan.

44

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

Verifica se há mudanças no status de três tipos de entrada, saída e exceções de objetos IO que são passados ​​como matrizes de objetos IO. nil é passado para argumentos que não precisam de verificação. É retornada uma matriz de três elementos contendo matrizes dos objetos IO para os quais houve mudanças de status. nil é retornado no tempo limite.

45

set_trace_func( proc)

Define um manipulador para rastreamento. proc pode ser uma string ou um objeto proc . set_trace_func é usado pelo depurador e profiler.

46

sleep([ sec])

Suspende a execução do programa por segundos. Se sec não for especificado, o programa será suspenso para sempre.

47

split([ sep[, max]])

Equivalente a $ _. Split.

48

sprintf( fmt[, arg...])

format( fmt[, arg...])

Retorna uma string em que arg é formatado de acordo com fmt. As especificações de formatação são essencialmente as mesmas do sprintf na linguagem de programação C. Os especificadores de conversão (% seguido pelo especificador de campo de conversão) em fmt são substituídos pela string formatada do argumento correspondente. Uma lista de conversões arquivadas é fornecida abaixo na próxima seção.

49

srand([ seed])

Inicializa uma matriz de números aleatórios. Se a semente não for especificada, a inicialização será realizada usando a hora e outras informações do sistema para a semente.

50

String( obj)

Retorna obj após convertê-lo em uma string usando obj.to_s.

51

syscall( sys[, arg...])

Chama uma função de chamada do sistema operacional especificada por number sys . Os números e o significado de sys dependem do sistema.

52

system( cmd[, arg...])

Executa cmd como uma chamada para a linha de comando. Se vários argumentos forem especificados, o comando será executado diretamente sem expansão de shell. Retorna verdadeiro se o status de retorno for 0 (sucesso).

53

sub( x, y)

sub( x) {...}

Substitui a primeira string correspondente a x em $ _ por y. Se um bloco for especificado, as strings correspondentes serão substituídas pelo resultado do bloco. O resultado modificado é atribuído a $ _.

54

sub!( x, y)

sub!( x) {...}

Executa a mesma substituição que sub, exceto que a string é alterada no lugar.

55

test( test, f1[, f2])

Executa vários testes de arquivo especificados pelo teste de caracteres . Para melhorar a legibilidade, você deve usar os métodos da classe File (por exemplo, File :: readable?) Em vez desta função. Uma lista de argumentos é fornecida abaixo na próxima seção.

56

throw( tag[, value = nil])

Salta para a função catch esperando com o símbolo ou tag string . value é o valor de retorno a ser usado pelo catch .

57

trace_var( var, cmd)

trace_var( var) {...}

Define o rastreamento de uma variável global. O nome da variável é especificado como um símbolo. cmd pode ser uma string ou objeto Proc.

58

trap( sig, cmd)

trap( sig) {...}

Define um manipulador de sinal. sig pode ser uma string (como SIGUSR1) ou um inteiro. SIG pode ser omitido do nome do sinal. O manipulador de sinais para o sinal EXIT ou o sinal número 0 é invocado antes do término do processo.

59

untrace_var( var[, cmd])

Remove o rastreamento de uma variável global. Se cmd for especificado, apenas esse comando será removido.

Funções para Números

Aqui está uma lista de funções integradas relacionadas ao número. Eles devem ser usados ​​da seguinte forma -

#!/usr/bin/ruby

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

Isso produzirá o seguinte resultado -

12
22.4
false
Sr. Não. Métodos e Descrição
1

n + num

n - num

n * num

n / num

Executa operações aritméticas: adição, subtração, multiplicação e divisão.

2

n % num

Retorna o módulo de n.

3

n ** num

Exponenciação.

4

n.abs

Retorna o valor absoluto de n.

5

n.ceil

Retorna o menor inteiro maior ou igual a n.

6

n.coerce( num)

Retorna uma matriz contendo num e n, ambos possivelmente convertidos em um tipo que permite que sejam operados mutuamente. Usado na conversão automática de tipo em operadores numéricos.

7

n.divmod( num)

Retorna uma matriz contendo o quociente e o módulo da divisão de n por num.

8

n.floor

Retorna o maior inteiro menor ou igual a n.

9

n.integer?

Retorna verdadeiro se n for um inteiro.

10

n.modulo( num)

Retorna o módulo obtido dividindo n por num e arredondando o quociente com chão

11

n.nonzero?

Retorna n se não for zero, caso contrário, nil.

12

n.remainder( num)

Retorna o restante obtido pela divisão n de nume removendo decimais do quociente. oresult e n sempre tem o mesmo sinal.

13

n.round

Retorna n arredondado para o número inteiro mais próximo.

14

n.truncate

Retorna n como um número inteiro com decimais removidos.

15

n.zero?

Retorna zero se n for 0.

16

n & num

n | num

n ^ num

Operações bit a bit: AND, OR, XOR e inversão.

17

n << num

n >> num

Deslocamento à esquerda e à direita bit a bit.

18

n[num]

Retorna o valor de numo bit do bit menos significativo, que é n [0].

19

n.chr

Retorna uma string contendo o caractere para o código do caractere n.

20

n.next

n.succ

Retorna o próximo inteiro após n. Equivalente a n + 1.

21

n.size

Retorna o número de bytes na representação da máquina de n.

22

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

Repete o bloco de n para upto, incrementando por step cada vez.

23

n.times {|n| ...}

Repete o bloco n vezes.

24

n.to_f

Converte nem um número de ponto flutuante. A conversão de flutuação pode perder informações de precisão.

25

n.to_int

Devoluções n após a conversão em número interger.

Funções para Float

Sr. Não. Métodos e Descrição
1

Float::induced_from(num)

Retorna o resultado da conversão de num em um número de ponto flutuante.

2

f.finite?

Retorna verdadeiro se f não for infinito e f.nan for falso.

3

f.infinite?

Retorna 1 se f for infinito positivo, -1 se infinito negativo ou nulo se qualquer outra coisa.

4

f.nan?

Retorna verdadeiro se f não for um número de ponto flutuante IEEE válido.

Funções para matemática

Sr. Não. Métodos e Descrição
1

atan2( x, y)

Calcula a tangente do arco.

2

cos( x)

Calcula o cosseno de x.

3

exp( x)

Calcula uma função exponencial (e elevado à potência de x).

4

frexp( x)

Retorna uma matriz de dois elementos contendo a fração nominalizada e o expoente de x.

5

ldexp( x, exp)

Retorna o valor de x vezes 2 à potência de exp.

6

log( x)

Calcula o logaritmo natural de x.

7

log10( x)

Calcula o logaritmo de base 10 de x.

8

sin( x)

Calcula o seno de x.

9

sqrt( x)

Retorna a raiz quadrada de x. x deve ser positivo.

10

tan( x)

Calcula a tangente de x.

Especificador de campo de conversão

A função sprintf (fmt [, arg ...]) e format (fmt [, arg ...]) retorna uma string na qual arg é formatado de acordo com fmt. As especificações de formatação são essencialmente as mesmas do sprintf na linguagem de programação C. Os especificadores de conversão (% seguido pelo especificador de campo de conversão) em fmt são substituídos pela string formatada do argumento correspondente.

Sr. Não. Especificador e descrição
1

b

Inteiro binário

2

c

Personagem único

3

d,i

Número inteiro decimal

4

e

Notação exponencial (por exemplo, 2.44e6)

5

E

Notação exponencial (por exemplo, 2.44E6)

6

f

Número de ponto flutuante (por exemplo, 2,44)

7

g

use% e se o expoente for menor que -4,% f caso contrário

8

G

use% E se o expoente for menor que -4,% f caso contrário

9

o

Octal inteiro

10

s

String ou qualquer objeto convertido usando to_s

11

u

Inteiro decimal sem sinal

12

x

Número inteiro hexadecimal (por exemplo, 39ff)

13

X

Número inteiro hexadecimal (por exemplo, 39FF)

A seguir está o exemplo de uso -

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

Isso produzirá o seguinte resultado -

abc
d = 42
00ff
   hello
he

Argumentos da função de teste

O teste de função (teste, f1 [, f2]) executa um dos seguintes testes de arquivo especificados pelo teste de caractere . Para melhorar a legibilidade, você deve usar os métodos da classe File (por exemplo, File :: readable?) Em vez desta função.

Sr. Não. Argumento e Descrição
1

?r

F1 é legível pelo uid efetivo do chamador?

2

?w

O f1 é gravável pelo uid efetivo do chamador?

3

?x

É f1 executável pelo uid efetivo do chamador?

4

?o

F1 pertence ao uid efetivo do chamador?

5

?R

F1 é legível pelo uid real do chamador?

6

?W

O f1 é gravável pelo uid real do chamador?

7

?X

É f1 executável pelo uid real do chamador?

8

?O

F1 pertence ao uid real do chamador?

9

?e

F1 existe?

10

?z

F1 tem comprimento zero?

11

?s

Tamanho do arquivo de f1 (nulo se 0)

12

?f

F1 é um arquivo normal?

13

?d

F1 é um diretório?

14

?l

F1 é um link simbólico?

15

?p

F1 é um pipe nomeado (FIFO)?

16

?S

F1 é um soquete?

17

?b

F1 é um dispositivo de bloco?

18

?c

F1 é um dispositivo de caractere?

19

?u

F1 tem o bit setuid definido?

20

?g

F1 tem o bit setgid definido?

21

?k

F1 tem o bit sticky definido?

22

?M

Hora da última modificação para f1.

23

?A

Última hora de acesso para f1.

24

?C

Tempo de mudança do último inode para f1.

Sr. Não. Argumento e Descrição
1

?=

Os tempos de modificação de f1 e f2 são iguais?

2

?>

O tempo de modificação de f1 é mais recente do que f2?

3

?<

O tempo de modificação de f1 é mais antigo que f2?

4

?-

F1 é um link físico para f2?

A seguir está o exemplo de uso. Assumindo que main.rb existe com permissões de leitura, gravação e não execução -

#!/usr/bin/ruby

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

Isso produzirá o seguinte resultado -

true
false
false